ES6中的代理模式 proxy

Proxy 對象用于定義基本操作的自定義行為如屬性查找,賦值,枚舉,函數(shù)調(diào)用等


1.基本語法:

let p = new Proxy(target, handler);

target是你要代理的對象.它可以是JavaScript中的任何合法對象.如: (數(shù)組, 對象, 函數(shù)等等)


handler是你要自定義操作方法的一個集合.


p是一個被代理后的新對象,它擁有target的一切屬性和方法.只不過其行為和結(jié)果是在handler中自定義的.

const target = {
? someProp: 1
}
const handler = {
? get: function(target, key) {
? ? return key in target ?
? ? ? target[key] :
? ? 'Doesn't exist!';
? }
}
const proxy = new Proxy(target, handler);
console.log(proxy.someProp) // 1
console.log(proxy.someOtherProp) // Doesn't exist!

2.Proxy的作用

1、 攔截和監(jiān)視外部對對象的訪問

2、 降低函數(shù)或類的復(fù)雜度

3、 在復(fù)雜操作前對操作進行校驗或?qū)λ栀Y源進行管理。


代理跟特性很相似,特性是對同一個對象的操作,數(shù)據(jù)不能在當前屬性下存儲,存儲在備份中,代理是對不同的對象的操作,數(shù)據(jù)可以直接存儲在當前屬性下,原對象屬性沒有發(fā)生改變

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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