proxy可以拦截的13中方法

30 阅读1分钟

ES6 的 Proxy功能强大,它允许你拦截并自定义对象的基本操作。下面这个表格汇总了 Proxy可以拦截的主要操作(也称为陷阱,traps)及其触发时机。

操作类别拦截器方法 (Trap)触发时机/拦截的操作
​属性访问​get(target, prop, receiver)读取属性,如 obj.name
set(target, prop, value, receiver)设置属性值,如 obj.name = 'value'
has(target, prop)执行 in操作符,如 'name' in obj
deleteProperty(target, prop)执行 delete操作符,如 delete obj.name
​属性描述​defineProperty(target, prop, descriptor)调用 Object.defineProperty()
getOwnPropertyDescriptor(target, prop)调用 Object.getOwnPropertyDescriptor()
​原型与扩展​getPrototypeOf(target)调用 Object.getPrototypeOf()
setPrototypeOf(target, prototype)调用 Object.setPrototypeOf()
isExtensible(target)调用 Object.isExtensible()
preventExtensions(target)调用 Object.preventExtensions()
​枚举与迭代​ownKeys(target)调用 Object.keys()Object.getOwnPropertyNames()Object.getOwnPropertySymbols()for...in
​函数调用​apply(target, thisArg, argumentsList)代理目标为函数时的调用,如 proxy()
construct(target, argumentsList, newTarget)使用 new操作符,如 new proxy()