js中的Object.defineProperty()和defineProperties()
Object.defineProperty()
1、作用:该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象
2、创建属性:如果对象中不存在指定的属性,Object.defineProperty()就创建这个属性,当描述符中省略某些字段时,这些字段将使用它们的默认值(拥有布尔值的字段的默认值都是false。value,get和set字段的默认值为undefined);而点运算符添加的普通属性,属性描述符拥有布尔值的字段的默认值都是true
Object.defineProperty(o1,"a",{value :1});
//等价于
Object.defineProperty(o1,"a",{value : 1,
writable : false,
configurable : false,
enumerable : false});
let o2 = {};
o2.a = 1;
//等价于
Object.defineProperty(o2,"a",{value : 1,
writable : true,
configurable : true,
enumerable : true});3、修改属性:如果属性已经存在,Object.defineProperty()将尝试根据描述符中的值以及对象当前的配置来修改这个属性
let o3 = {}
o3.a = 1;
console.log(o.a) // 1
console.log(o.propertyIsEnumerable('a')) // true
Object.defineProperty(o3, 'a', {enumerable: false})
console.log(o.a) // 1
console.log(o.propertyIsEnumerable('a')) // false
Object.defineProperties()
1、作用:该方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象
2、例子:
var obj = {};
Object.defineProperties(obj, {
'property1': {
value: true,
writable: true
},
'property2': {
value: 'Hello',
writable: false
}
// etc. etc.
});本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!