在前端开发中,我们经常会看到 [object Object]
这样的字符串。这个字符串看上去有些奇怪,特别是其中“object”这个单词出现了两次。那么为什么会出现这种情况呢?
基本概念
在 JavaScript 中,一切皆为对象。当我们使用 console.log()
打印一个对象时,控制台会将其转化为一个字符串,以便于查看和调试。如果一个对象没有定义 toString
方法,那么会默认调用 Object.prototype.toString()
方法,将其转化为一个字符串。
[object Object] 的由来
Object.prototype.toString()
方法返回一个表示对象类型的字符串。例如:
--- ----- - --- --------------------------------------------------- -- -------- -------
可以看到,在标准对象类型中,返回的字符串包括了类型的名称。但是,对于自定义对象类型而言,却不会显示类型的名称,只会显示两个 "object" 字符串。这就是为什么会出现 [object Object]
的原因。
解决方法
如果我们想要输出一个自定义对象的详细信息,应该如何处理呢?答案是:重写 toString
方法。我们可以在自定义对象中添加一个 toString
方法,让它返回我们需要的字符串。
-------- ------------ ---- - --------- - ----- -------- - ---- - ------------------------- - ---------- - ------ ------- - ----- - - --------- - -- ---- - - -------- - - --- -- --- ------ - --- ------------ ----- ---- ------------------------------- -- ------- - ----- ---- ---- ---- -- --
通过重写 toString
方法,我们就可以将自定义对象转化为一个可读性更高的字符串了。
总结
在 JavaScript 中,一切皆为对象。当我们使用 console.log()
打印一个对象时,控制台会将其转化为一个字符串,以便于查看和调试。如果一个对象没有定义 toString
方法,那么会默认调用 Object.prototype.toString()
方法,将其转化为一个字符串。对于自定义对象类型而言,只会显示两个 "object" 字符串。我们可以通过重写 toString
方法来解决这个问题,并输出一个自定义对象的详细信息。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26211