JS監聽對象屬性改變


 設想這么一個需求:

user.name = '張三'

對user數據進行操作的時候,同步的修改頁面上的用戶名為張三。

這就是個數據綁定的概念。

 

針對這類需求

ES5提供了Object.defineProperty函數

使用方式如下所示:

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代理處理,代碼如下:

 

var user = new Proxy({},{
     set:function(target,key,value,receiver){
       //處理代碼
     }
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM