@demonly
2017-10-14T09:23:59.000000Z
字数 1036
阅读 836
JavaScript
调用 new Proxy() 可创建代替其他目标(target)对象的代理,Proxy 对象中可以添加陷阱方法拦截对于目标对象的各种操作并转发到目标对象上。
不同的陷阱具有不同的参数,set 陷阱的定义接受四个参数:
Reflect 的同名方法用于将操作转发到代理目标。
let proxy = new Proxy(target, {
set(trapTarget, key, value, receiver) {
// ...
return Reflect.set(trapTarget, key, value, receiver);
}
});
Proxy 支持以下拦截操作
propKey in proxy
操作Object.getOwnPropertyNames(proxy)
操作Object.getOwnPropertyDescriptor(proxy, propKey)
操作Object.defineProperty(proxy, propKey, propDesc)
操作Object.preventExtensions(proxy)
操作Object.getPrototypeOf(proxy)
操作Object.isExtensible(proxy)
操作Object.setPrototypeOf(proxy, proto)
操作