对象的可枚举性

本文深入探讨了JavaScript中对象属性的描述符,包括value、writable、enumerable和configurable等字段,解释了它们如何控制属性行为,并详细说明了四种操作(for...in循环、Object.keys()、JSON.stringify()和Object.assign())如何仅处理enumerable为true的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。
Object.getOwnPropertyDescriptor(obj, key)方法可以获取该属性的描述对象。

let obj = {
  foo: 123
}
Object.getOwnPropertyDescriptor(obj, 'foo')
// {
// value: 123,
// writable: true,
// enumerable: true, // 可枚举性
// configurable: true
// }

目前,有四个操作会忽略enumerable为false的属性,即只遍历可枚举的属性:
for…in循环:只遍历对象自身的和继承的可枚举的属性。
Object.keys():返回对象自身的所有可枚举的属性的键名。
JSON.stringify():只串行化对象自身的可枚举的属性。
Object.assign(): 只拷贝对象自身的可枚举的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值