簡體   English   中英

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

[英]Node.js console.log(object) prints empty object

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

我在文件builder.js下有以下代碼(來自“學習Javascript設計模式”書)

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引擎,它們也為控制台對象使用單獨的原型嗎?

節點中的console.log()利用util.inspect() ,該util.inspect() Object.keys()在對象上使用Object.keys() ,該對象僅返回自己的可枚舉屬性 另外, 默認情況下Object.defineProperty()設置enumerable: false如果未將其顯式設置為trueObject.defineProperty() enumerable: false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM