Object.define Property(obj, prop, descriptor)
参数类型
· obj 要定义属性的对象。
· prop 要定义或修改的属性的名称或 Symbol 。
· descriptor 要定义或修改的属性描述符。
descriptor
· value 该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数)等
· writable 当且仅当该属性的 writable
键值为 true
时,属性的值,也就是上面的 value
,才能被赋值运算符改变 默认为false
· Enumerable 当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。默认为 false。
· Configurable 当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。
定义方式
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: false
});
object1.property1 = 77;
console.log(object1);
writable值为false时,不可修改
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: true
});
object1.property1 = 77;
console.log(object1);
writable值为true时,可修改
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: true,
enumerable: true
});
for (var i in object1) {
console.log(i)
console.log(object1[i])
}
enumerable为true时,对象对应的属性可被枚举
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: true,
enumerable: false
});
for (var i in object1) {
console.log(i)
console.log(object1[i])
}
console.log(object1)
enumerable为false时,对象对应的属性不可被枚举
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: true,
enumerable: false,
configurable: true
});
delete object1['property1'];
console.log(object1)
image.png
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: true,
enumerable: false,
configurable: false
});
delete object1['property1'];
console.log(object1)
image.png
网友评论