为什么 [object Object] 中会出现两次“object”?

在前端开发中,我们经常会看到 [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