当我使用文字语法创建对象时,将对象打印到控制台会显示该对象foo
和p
财产。
foo = {};
foo.p = 42;
console.log(foo);
console.log(foo.p);
Outputs:
{ p: 42 }
当我使用 Object.create() 语法时,使用 console.log 打印对象会显示一个空对象。
bar = Object.create({}, { p: { value: 42 } });
console.log(bar);
console.log(bar.p);
Outputs:
{}
42
为什么不bar
显示财产p
当使用console.log()时?
我猜您正在使用 NodeJS 进行这些测试。
原因是在你的第二个例子中(使用Object.create
), the p
财产是不可枚举。当我在 NodeJS 上运行你的示例时,我没有看到p
在第二个示例中,因为它是不可枚举的,因为通过属性描述符创建的属性(例如第二个参数中的属性)Object.create
默认为不可枚举,除非您包含enumerable: true
。如果我添加enumerable: true
对此,我明白了p
在第二个例子中也是如此。
您看到的内容会根据您使用的环境而有所不同。例如,在 Chrome 的开发工具中,我看到p
在这两个例子中,即使p
是不可枚举的。但是当输出到非交互式控制台时,我猜他们决定只显示可枚举属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)