get(target, propKey, receiver):攔截對象屬性的讀取项栏,比如proxy.foo和proxy['foo']懂拾。
set(target, propKey, value, receiver):攔截對象屬性的設(shè)置蝠检,比如proxy.foo = v或proxy['foo'] = v,返回一個布爾值。
has(target, propKey):攔截propKey in proxy的操作,返回一個布爾值理卑。
deleteProperty(target, propKey):攔截delete proxy[propKey]的操作,返回一個布爾值蔽氨。
ownKeys(target):攔截Object.getOwnPropertyNames(proxy)藐唠、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)鹉究、for...in循環(huán)宇立,返回一個數(shù)組。該方法返回目標對象所有自身的屬性的屬性名坊饶,而Object.keys()的返回結(jié)果僅包括目標對象自身的可遍歷屬性泄伪。
getOwnPropertyDescriptor(target, propKey):攔截Object.getOwnPropertyDescriptor(proxy, propKey)殴蓬,返回屬性的描述對象匿级。
defineProperty(target, propKey, propDesc):攔截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs)染厅,返回一個布爾值痘绎。
preventExtensions(target):攔截Object.preventExtensions(proxy),返回一個布爾值肖粮。
getPrototypeOf(target):攔截Object.getPrototypeOf(proxy)孤页,返回一個對象。
isExtensible(target):攔截Object.isExtensible(proxy)涩馆,返回一個布爾值行施。
setPrototypeOf(target, proto):攔截Object.setPrototypeOf(proxy, proto),返回一個布爾值魂那。如果目標對象是函數(shù)蛾号,那么還有兩種額外操作可以攔截。
apply(target, object, args):攔截 Proxy 實例作為函數(shù)調(diào)用的操作涯雅,比如proxy(...args)鲜结、proxy.call(object,? ...args)、proxy.apply(...)活逆。construct(target, args):攔截 Proxy 實例作為構(gòu)造函數(shù)調(diào)用的操作精刷,比如new proxy(...args)。