設想這麼一個需求:函數
user.name = '張三'spa
對user數據進行操做的時候,同步的修改頁面上的用戶名爲張三。代理
這就是個數據綁定的概念。code
針對這類需求blog
ES5提供了Object.defineProperty函數get
使用方式以下所示:同步
1 Object.defineProperty(user, 'name', { 2 set:function(key,value){ 3 //此處攔截了設置請求 4 } 5 6 });
可是,若是爲user增長一個新的屬性,好比user裏沒有id屬性,增長一個 user.id=1,Object.defineProperty函數是不知道存在'id'的,也就沒法寫出上面的代碼,這能夠用ES6提供的Proxy代理處理,代碼以下:io
var user = new Proxy({},{ set:function(target,key,value,receiver){ //處理代碼 } })