handler.getOwnPropertyDescriptor()
方法用于拦截 Object.getOwnPropertyDescriptor()
,返回一个属性描述对象或者 undefined
。
const proxy = new Proxy(target, {getOwnPropertyDescriptor: function (target, property) {// do something},});
参数 | 说明 | 类型 |
---|---|---|
target | 目标对象 | object |
property | 返回属性名称的描述 | object / undefined |
该方法会拦截目标对象的以下操作:
Object.getOwnPropertyDescriptor
Reflect.getOwnPropertyDescriptor
如果违背了以下的约束,proxy
会抛出 TypeError:
getOwnPropertyDescriptor
必须返回一个 object
或 undefined
Object.getOwnPropertyDescriptor(target)
的结果可以使用 Object.defineProperty
应用于目标对象,也不会抛出异常const handler = {getOwnPropertyDescriptor(target, key) {if (key[0] === '_') {return;}return Object.getOwnPropertyDescriptor(target, key);},};const target = {_foo: 'bar',baz: 'tar',};const proxy = new Proxy(target, handler);Object.getOwnPropertyDescriptor(proxy, 'wat');// undefinedObject.getOwnPropertyDescriptor(proxy, '_foo');// undefinedObject.getOwnPropertyDescriptor(proxy, 'baz');// { value: 'tar', writable: true, enumerable: true, configurable: true }