JavaScript中的所有数据类型都是可枚举的吗



我知道对象属性有3个标志,使用其中一个标志,我可以将某个属性设置为不可枚举。但在所有其他情况下,所有类型的数据都是可枚举的吗?

  • 默认情况下,使用简单赋值或通过属性初始值设定项可枚举的,与数据无关类型

  • 默认情况下,通过Object.defineProperty, Object.defineProperties等方法定义的属性是不可枚举的。

例如:

1.属性初始化器(默认可枚举(:

const obj = { a: 'foo', b: 123, c: {} };

2.简单赋值(默认可枚举(:

obj.a = 'foo'
obj.b = 123
obj.c = {}

3.对象的方法(默认不可枚举(:

obj = {};  
Object.defineProperties(obj, 
{   a: {   value: 'foo' },
{   b: {   value: 123 },
{   c: {   value: {} }
);  

此处提供进一步参考。

最新更新