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, 可以删除可以重写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程