Node.js console.log(object)打印空对象

时间:2015-10-05 04:22:15

标签: javascript node.js

我很好奇Node.js通过console.log(对象)打印对象的方式。

我在文件constructor.js下有以下代码(来自Learning Javascript Design Patterns一书)

var defineProp = function(obj, key, value){
    var config = {
        value: value, 
        writable: true,
        configurable: true
    };
    Object.defineProperty(obj, key, config ); 
}

var person = Object.create(Object.prototype);


defineProp(person, "car", "Delorean"); 
defineProp(person, "dateOfBirth", "1981"); 
defineProp(person, "hasBeard", false); 

console.log(person); //This prints {} in Node.js

使用>node constructor.js的代码运行会打印一个空对象。然而,如果我在HTML文件中运行代码,Chrome会打印出我所期望的内容。

console.log(person); //Chrome prints Object {car: "Delorean", dateOfBirth: "1981", hasBeard: false} 

注意:我仍然可以在Node下打印属性(例如console.log(person.car)),而不是对象本身(例如console.log(person)

这是为什么? Chrome和Node是否为控制台对象使用单独的原型,即使它们共享相同的JavaScript引擎?

1 个答案:

答案 0 :(得分:4)

节点中的

console.log()使用util.inspect()uses Object.keys()对象returns only own enumerable properties。此外,by defaultObject.defineProperty()设置enumerable: false如果您未明确将其设置为true