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 @   未来的山大王  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示