Object.defineProperty定义对象属性

Object.defineProperty(obj, prop, descriptor)

obj: 对象

prop: 属性名

descriptor: 被修改/定义的属性描述符

Object.defineProperty(obj, prop, {

value:属性值,

writable: true/false, 是否可写

enumerable, 是否可枚举, 可枚举性决定了这个属性能否被for…in查找遍历到

Configurable: 从字面意思看它表示“可配置”,含义是:当它为true时,该属性的描述符可被修改,并且该属性可被delete删除。同理,当它为false时,我们无法再次调用defineProperty去修改描述符,也不可通过delete删除。

})


let person = new Object();
Object.defineProperty(person , 'name', {
    value: '小明',
    writable: false,
    enumerable: false,
    configurable: false
});
Object.defineProperty(person , 'age', {
    value: '18',
    writable: true,
    enumerable: true,
    configurable: true
});
console.log(person); // {age: '18', name: '小明'}
person.name = '小蜜蜂';
person.age = '88';

console.log(person); // {age: '18', name: '小明'}
 /*因为writable设未false, 所以name 不可重写 */

for(key in person) {
    console.log(key);
}
// 只有age被打印出来, 因为name的enumerable为false不可枚举

delete person.name;
delete person.age;
console.log(person); // {name: '小明'}
// age的configurable为true, 可以删除
Object.defineProperty(person , 'age', {
    value: '666',
    writable: true,
    enumerable: true,
    configurable: true
});
console.log(person); // {age: '666', name: '小明'}
// age的configurable为true, 可以删除可以重写

 

posted @ 2022-10-23 15:35  未来的山大王  阅读(49)  评论(0)    收藏  举报