mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
PR-URL: https://github.com/nodejs/node/pull/59680 Reviewed-By: Matthew Aitken <maitken033380023@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jordan Harband <ljharb@gmail.com>
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
const assert = require('assert');
|
|
|
|
class MyDOMException extends DOMException {
|
|
ownProp;
|
|
#reason;
|
|
|
|
constructor() {
|
|
super('my message', 'NotFoundError');
|
|
this.ownProp = 'bar';
|
|
this.#reason = 'hello';
|
|
}
|
|
|
|
get reason() {
|
|
return this.#reason;
|
|
}
|
|
}
|
|
|
|
const myException = new MyDOMException();
|
|
// Verifies the prototype chain
|
|
assert(myException instanceof MyDOMException);
|
|
assert(myException instanceof DOMException);
|
|
assert(myException instanceof Error);
|
|
// Verifies [[ErrorData]]
|
|
assert(Error.isError(myException));
|
|
|
|
// Verifies subclass properties
|
|
assert(Object.hasOwn(myException, 'ownProp'));
|
|
assert(!Object.hasOwn(myException, 'reason'));
|
|
assert.strictEqual(myException.reason, 'hello');
|
|
|
|
// Verifies error properties
|
|
assert.strictEqual(myException.name, 'NotFoundError');
|
|
assert.strictEqual(myException.code, 8);
|
|
assert.strictEqual(myException.message, 'my message');
|
|
assert.strictEqual(typeof myException.stack, 'string');
|
|
|
|
// Verify structuredClone only copies known error properties.
|
|
const cloned = structuredClone(myException);
|
|
assert(!(cloned instanceof MyDOMException));
|
|
assert(cloned instanceof DOMException);
|
|
assert(cloned instanceof Error);
|
|
assert(Error.isError(cloned));
|
|
|
|
// Verify custom properties
|
|
assert(!Object.hasOwn(cloned, 'ownProp'));
|
|
assert.strictEqual(cloned.reason, undefined);
|
|
|
|
// Verify cloned error properties
|
|
assert.strictEqual(cloned.name, 'NotFoundError');
|
|
assert.strictEqual(cloned.code, 8);
|
|
assert.strictEqual(cloned.message, 'my message');
|
|
assert.strictEqual(cloned.stack, myException.stack);
|