理解Object.defineProperty()
方法说明:
用来定义或修改对象的属性。
共3个参数都是必须的:obj-目标对象、newKey-属性名、{}-属性特性
给对象的属性添加特性描述(第三个参数),目前提供两种形式:数据描述和存取器描述。
数据描述:
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这两个属性
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