Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用Object.create()和console.log()时不显示属性?_Javascript_Node.js_Console.log - Fatal编程技术网

Javascript 为什么在使用Object.create()和console.log()时不显示属性?

Javascript 为什么在使用Object.create()和console.log()时不显示属性?,javascript,node.js,console.log,Javascript,Node.js,Console.log,当我使用文字语法创建对象时,将对象打印到控制台会显示对象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)

当我使用文字语法创建对象时,将对象打印到控制台会显示对象
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

为什么在使用console.log()时,
bar
不显示属性
p

我猜您正在使用NodeJS进行这些测试

原因是在第二个示例中(使用
Object.create
),
p
属性是不可枚举的。当我在NodeJS上运行您的示例时,我在第二个示例中看不到
p
,因为它是不可枚举的,因为属性是通过属性描述符创建的,例如通过
对象的第二个参数中的属性。创建
默认为不可枚举,除非包含
可枚举:true
。如果我向它添加
enumerable:true
,我也会在第二个示例中看到
p


您看到的内容将因您使用的环境而异。例如,在Chrome的开发工具中,我在两个示例中都看到了
p
,即使
p
不可枚举。但当输出到非交互式控制台时,我想他们决定只显示可枚举属性。

我在控制台中尝试了它,它工作正常


您使用的是哪种浏览器,在我的chrome 49中运行良好您使用的是什么环境?