js監聽對象屬性的改變


在ES5中,通過defineProperty()進行監聽

  • 假設對user對象的name屬性進行監聽,當設置name屬性值時,會執行相應的函數
Object.defineProperty(user, 'name', {
    set : funtion(value){
               name = value;
                console.log('set: name:' + value)
        }
})

當需要設置對象中多個屬性時,使用defineProperties()進行監聽

Object.defineProperties(obj,{
  a : {
        configurable: true, // 設置屬性可以更改,默認為false
        set : function(value){}
  },      
   b : {
       configurable: true, // 設置屬性可以更改,默認為false
        set : function(value){}
  }
} 
})

 

在ES6中,通過Proxy實現

funtion handle(){
   // 改寫set方法,監聽設置
    set: funtion(){},
    get: funtion(){}
}

let p = new Proxy({},handle) // 第一個參數為監聽的對象,第二個參數為改寫的方法

 


免責聲明!

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



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