js中object的property系列,如何打造一个可枚举属性?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
继续说一下js
中的object
的属性问题,本文的目标是打造一个可枚举的属性。可枚举的意思,就是可以在循环里面列出来。大家看范例,可以进一步说明。
本文测试环境:chrome@87.0.4280.88
。重点讲述的是:enumerable
参数。
如何遍历object
这里选用了一个for in
语句,具体范例如下:
var obj = {a: 1, b: 2, c: 3};
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
输出结果如下:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
enumerable
参数
如果上述例子中的a
,b
,c
,使用defineProperty()
来定义,并设置enumerable
参数的话,那么将会有什么样的变化呢?请看下面的例子:
const object1 = {
property1:'p1'
};
Object.defineProperty(object1, 'property2', {
value: 'p2'
});
Object.defineProperty(object1, 'property3', {
value: 'p3',
enumerable:true
});
Object.defineProperty(object1, 'property4', {
value: 'p4',
enumerable:false
});
for (const prop in object1) {
console.log(`object1.${prop} = ${object1[prop]}`);
}
运行结果如下:
> "object1.property1 = p1"
> "object1.property3 = p3"
默认值歧义
在这里,苏南大叔得出的结论,是这样的:这个enumerable
默认值和configurable
默认值的结论差不多。在默认的创建属性的方式下,enumerable
默认值是true
,可以被列出。但是在defineProperty()
下,configurable
默认值是false
,就是不可以被列出。
相关链接
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
总结
呃,历史总是惊人的相似。更多文章,请参考下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。