handler.getOwnPropertyDescriptor() - JavaScript 编辑
The handler.getOwnPropertyDescriptor()
method is a trap for Object.getOwnPropertyDescriptor()
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.Syntax
const p = new Proxy(target, {
getOwnPropertyDescriptor: function(target, prop) {
}
});
Parameters
The following parameters are passed to the getOwnPropertyDescriptor()
method. this
is bound to the handler.
target
- The target object.
prop
- The name of the property whose description should be retrieved.
Return value
The getOwnPropertyDescriptor()
method must return an object or undefined
.
Description
The handler.getOwnPropertyDescriptor()
method is a trap for Object.getOwnPropertyDescriptor()
.
Interceptions
This trap can intercept these operations:
Invariants
If the following invariants are violated, the proxy will throw a TypeError
:
getOwnPropertyDescriptor()
must return an object orundefined
.- A property cannot be reported as non-existent, if it exists as a non-configurable own property of the target object.
- A property cannot be reported as non-existent, if it exists as an own property of the target object and the target object is not extensible.
- A property cannot be reported as existent, if it does not exists as an own property of the target object and the target object is not extensible.
- A property cannot be reported as non-configurable, if it does not exists as an own property of the target object or if it exists as a configurable own property of the target object.
- The result of
Object.getOwnPropertyDescriptor(target)
can be applied to the target object usingObject.defineProperty()
and will not throw an exception.
Examples
Trapping of getOwnPropertyDescriptor
The following code traps Object.getOwnPropertyDescriptor()
.
const p = new Proxy({ a: 20}, {
getOwnPropertyDescriptor: function(target, prop) {
console.log('called: ' + prop);
return { configurable: true, enumerable: true, value: 10 };
}
});
console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a"
// 10
The following code violates an invariant.
const obj = { a: 10 };
Object.preventExtensions(obj);
const p = new Proxy(obj, {
getOwnPropertyDescriptor: function(target, prop) {
return undefined;
}
});
Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown
Specifications
Specification |
---|
ECMAScript (ECMA-262) The definition of '[[GetOwnProperty]]' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论