我知道对象属性有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: {} }
);
此处提供进一步参考。