Object.defineProperty用法
1、能干啥?
Object.defineProperty()
可以给传入的对象动态的添加或修改属性
2、怎么玩?
Object.defineProperty(obj,prop,desc)
它有三个参数:
-
obj:需要定义属性的当前对象
-
prop:当前需要定义的属性名;注意是string类型
-
desc:属性描述符;注意是object类型
desc常用的属性:
- value: 设置属性的值
- writable: 值是否可以重写。true | false,默认false
- enumerable: 目标属性是否可以被枚举。true | false,默认为false
- configurable: 目标属性是否可以被删除或是否可以再次修改特性 true | false,默认为false
- set(): 目标属性设置值的方法
- get():目标属性获取值的方法
注意:当使用了getter或setter方法,不允许使用writable和value这两个属性
let number = 20;
let person = {
name: 'ly',
};
Object.defineProperty(
person, // 操作的对象
'age', // 属性名
{
// value: 19, // 属性值
// enumerable: true, // 控制属性是否可以枚举(遍历),默认为fasle
// writable: true, // 控制属性是否可以被修改,默认为false
// configurable: true, // 控制属性是否可以删除,默认为false
get() {
console.log('获取值');
return 20;
},
set(value) {
console.log('设置值');
number = value;
},
}
);
console.log(person);
分类:
前端相关知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!