Object.defineProperty方法总结

1. 定义属性的两种形式

复制代码
//1
var obj = {};
obj.name = 'ming';

//相当于
Object.defineProperty(obj,'name',{
    value : 'ming',
    writable: true,
    configurable: true,
    enumerable: true
})

//2
Object.defineProperty(obj,'name',{value: 'ming'})

//相当于
Object.defineProperty(obj,'name',{
    value: 'ming',
    writable: false,
    configurable: false,
    enumerable: false
})
复制代码

2. defineProperty描述符

2.1 value 属性值
2.2 writable 是否可以修改
2.3 configurable 是否可配置,是否可删除

1. 是否可配置

Object.defineProperty(obj,'name',{configurable:false})

//再次配置描述符中的任何一个,包括value,都会报错
Object.defineProperty(obj,'name',{...}) //Cannot redefine property: name

2. 是否可删除

Object.defineProperty(obj,'name',{configurable:false})

delete obj.name //返回false

2.4 enumerable  是否可枚举

是否可以在 for...in 或 Object.keys() 中遍历

3. 设置只读属性

Object.defineProperty(obj,'name',{writable:false})

//只是设置writable为false,当configurable为true,同样可以通过
Object.defineProperty(obj,'name',{value:'xxx'})修改值

//只读设置应该是
Object.defineProperty(obj,'name',{writable:false,configurable:false})
posted @   全玉  阅读(1508)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示