方法說明:函數
用來定義或修改對象的屬性。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