1. 程式人生 > >es6代理 proxy 學習

es6代理 proxy 學習

bject 用法 深入 tree value 代理 重新 UNC 基本

深入淺出es6裏面有詳細介紹代理 深入淺出es6:http://www.infoq.com/cn/es6-in-depth/

以下是本人的 實際測試例子。

代理的基本用法。

// proxy = new Proxy(target,hander)

// 代理調用的方法,就是調用目標對象的方法,或者是被重寫的14中句柄對象中的方法。
//hander中的14個方法是Object內定的14個方法

// 如果重寫set,get就會重新定義.的行為,可以阻止賦值取值操作,同樣的可以輕松的監聽屬性的變化,類似於Object.defineProperty(obj,key,{set,get})中的set,get

(function(){

var target={c:12,d:33};
var proxy = new Proxy(target,{
get:function(target,key,receiver)
{
console.log("get...")
return Reflect.get(target,key,receiver);
},
set:function(target,key,value,receiver){
console.log("set...")
}
})

// proxy.account=1;
// console.log(proxy.account);

console.log(proxy.c);


})() ;

(function(){

//代理可以實現自動填充屬性,原理是監聽賦值操作,發現沒有就創建一個

function Tree() {
return new Proxy({}, handler);
}
var handler = {
get: function (target, key, receiver) {
if (!(key in target)) {
target[key] = Tree(); // 自動創建一個子樹
}
return Reflect.get(target, key, receiver);
},

};

var tree=Tree();
tree.aa.aa.aa.aa=1;
})();

es6代理 proxy 學習