Proxy 支持的13種攔截操作

1、get(target, propKey, receiver):

攔截對(duì)象屬性的讀取,比如proxy.foo和proxy['foo']。

2、set(target, propKey, value, receiver):
攔截對(duì)象屬性的設(shè)置,比如proxy.foo = v或proxy['foo'] = v,返回一個(gè)布爾值。

3、has(target, propKey):

攔截propKey in proxy的操作,返回一個(gè)布爾值。

4、deleteProperty(target, propKey):

攔截delete proxy[propKey]的操作,返回一個(gè)布爾值。

5、ownKeys(target):

攔截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for...in循環(huán),返回一個(gè)數(shù)組。該方法返回目標(biāo)對(duì)象所有自身的屬性的屬性名,而Object.keys()的返回結(jié)果僅包括目標(biāo)對(duì)象自身的可遍歷屬性。

6、getOwnPropertyDescriptor(target, propKey):

攔截Object.getOwnPropertyDescriptor(proxy, propKey),返回屬性的描述對(duì)象。

7、defineProperty(target, propKey, propDesc):

攔截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一個(gè)布爾值。

8、preventExtensions(target):

攔截Object.preventExtensions(proxy),返回一個(gè)布爾值。

9、getPrototypeOf(target):

攔截Object.getPrototypeOf(proxy),返回一個(gè)對(duì)象。

10、isExtensible(target):

攔截Object.isExtensible(proxy),返回一個(gè)布爾值。

11、setPrototypeOf(target, proto):

攔截Object.setPrototypeOf(proxy, proto),返回一個(gè)布爾值。如果目標(biāo)對(duì)象是函數(shù),那么還有兩種額外操作可以攔截。

12、apply(target, object, args):

攔截Proxy 實(shí)例作為函數(shù)調(diào)用的操作,比如proxy(...args)、proxy.call(object, ...args)、proxy.apply(...)。

13、construct(target, args):

攔截 Proxy 實(shí)例作為構(gòu)造函數(shù)調(diào)用的操作,比如new proxy(...args)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容