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

标签 javascript node.js

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

我在文件 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 是否为控制台对象使用不同的原型(prototype),即使它们共享相同的 javascript 引擎?

最佳答案

Node 中的

console.log() 使用 util.inspect()uses Object.keys()在对象上,returns only own enumerable properties .另外,by default , Object.defineProperty() 设置 enumerable: false 如果您没有明确将其设置为 true

关于javascript - Node.js console.log(object) 打印空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941243/

相关文章:

javascript - 从构造函数中将方法附加到原型(prototype)

javascript - 单个页面中的多个 <HTML> 标签

java - couchbase golang json 原子增量

node.js - 如何聚合数组中 ObjectID 出现的次数?

node.js - body-parser 对 express 有什么作用?

node.js - Express/Node 响应 header 列表?

javascript - ASP.NET MVC 复选框上的灰色字段 = true

javascript - 为什么我的网站在 Safari 上向左移动?

javascript - 找不到 gentelella-master fa-chevron-up 图标

javascript - 从 setTimeout 调用生成器函数