javaScript Object之defineProperty實現getter和setter
阿新 • • 發佈:2018-11-10
var setGetAndSet = function(obj,key){ var initVlaue = obj[key] Object.defineProperty(obj,key,{ get:function(){ console.log('get') return initVlaue }, set:function(val){ initVlaue = val; }, }) } var watch = function(obj){ var newObj = {}; for(var key in obj){ setGetAndSet(obj,key) } return newObj } var obj = { a:1 }; watch(obj)
Object.defineProperty() 方法設定屬性時,屬性不能同時宣告訪問器屬性( set 和 get )和 writable 或者 value 屬性。 意思就是,某個屬性設定了 writable 或者 value 屬性,那麼這個屬性就不能宣告 get 和 set 了,反之亦然。