簡體   English   中英

console.log(object) 如何在后台工作?

[英]How console.log(object) works in background?


我有這個代碼:

const obj = {name: 'maro', age: 77}

console.log(obj); // it logs { name: 'maro', age: 77 }

這似乎很明顯。 但我想知道 console?log 內部是如何工作的:它調用了哪些“obj”方法來獲取“{ name, 'maro': age: 77 }”

obj 包含這些屬性:

obj.__defineGetter__      obj.__defineSetter__      obj.__lookupGetter__      obj.__lookupSetter__      obj.__proto__             obj.constructor           obj.hasOwnProperty
obj.isPrototypeOf         obj.propertyIsEnumerable  obj.toLocaleString        obj.toString              obj.valueOf    obj.age        obj.name

但他們都沒有返回“{ name: 'maro', age: 77 }”!

甚至obj.toString()返回'[object Object]'

如果我沒記錯的話,它是obj.valueOf() 這是文檔: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf

正如您在Node.js console.log文檔中看到的那樣,它在幕后使用util.format來格式化其 output。

根據util.format文檔,它返回 object 的字符串表示形式,具有通用 JavaScript object 格式,類似於util.inspect

你可以看到它的實際實現,至少對於Node.js ,這里: https://github.com/nodejs/node/blob/75dc8938a40100a53323ed87159a1562f149ceca/lib1/ 閱讀這段代碼玩得開心:)

您可以使用 valueOf()。

const object1 = {name:"ankit",age:27}
console.log(object1.valueOf());

注意:字符串上下文中的對象通過 toString() 方法進行轉換,這與使用 valueOf 轉換為字符串基元的字符串對象不同。 所有對象都有字符串轉換,如果只有“[對象類型]”。 但是很多對象不會轉換為數字,boolean,或 function。

如果你需要名字 'maro' 和年齡 77,你需要使用 obj.name 和 obj.age...

暫無
暫無

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

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