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

Are all data types in JavaScript enumerable?

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

  • 默认情况下,所有属性都是使用简单赋值或通过 属性 initializerenumerable 与数据无关 类型。

  • 通过 Object.defineProperty, Object.defineProperties 等方法定义的属性默认为 不可枚举.

例如:

1.Property Initilaizer(默认可枚举):

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

2.Simple赋值(默认可枚举):

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

3.Object的方法(默认不可枚举):

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

进一步参考 here