理解Object.defineProperty()

方法說明:函數

用來定義或修改對象的屬性。spa

共3個參數都是必須的:obj-目標對象、newKey-屬性名、{}-屬性特性code

給對象的屬性添加特性描述(第三個參數),目前提供兩種形式:數據描述存取器描述對象

 

數據描述:blog

Object.defineProperty(obj,"newKey",{
  value:"hello", // 設置屬性的值
  writable:false, // 值是否能夠重寫。true | false
  enumerable:false, // 目標屬性是否能夠被枚舉。true | false(使用for...in或Object.keys())
  configurable:false // 目標屬性是否能夠被刪除或是否能夠再次修改特性 true | false
});

 

存取器描述:
注:當使用了getter或setter方法,不容許使用writable和value這兩個屬性get

var obj = {};
var initValue = 'hello';
Object.defineProperty(obj,"newKey",{
    get:function (){
        //當獲取值的時候觸發的函數
        return initValue;    
    },
    set:function (value){
        //當設置值的時候觸發的函數,設置的新值經過參數value拿到
        initValue = value;
    }
});
//獲取值
console.log( obj.newKey );  //hello

//設置值
obj.newKey = 'change value';

console.log( obj.newKey ); //change value
相關文章
相關標籤/搜索