handler.getOwnPropertyDescriptor() 方法用于拦截 Object.getOwnPropertyDescriptor(),返回一个属性描述对象或者 undefined。
const proxy = new Proxy(target, {getOwnPropertyDescriptor: function (target, property) {// do something},});
| 参数 | 说明 | 类型 |
|---|---|---|
target | 目标对象 | object |
property | 返回属性名称的描述 | object / undefined |
该方法会拦截目标对象的以下操作:
Object.getOwnPropertyDescriptorReflect.getOwnPropertyDescriptor如果违背了以下的约束,proxy 会抛出 TypeError:
getOwnPropertyDescriptor 必须返回一个 object 或 undefinedObject.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 }