当我记录类似console.log('' + {});
控制台的内容时,Chrome 会打印[Object object]
,但 node.js 中的内容不同({}
)。此时我会认为控制台输出取决于执行环境。
然而,最近我发现,给定一些非空对象foo
,我以某种方式打印了 Chrome,null
而不是上面的预期输出。因此使用console.log('' + foo);
导致null
控制台。这怎么可能?我的第一个猜测是我一定是不小心覆盖了一些重要的东西,比如某种toString()
方法。否则我无法解释为什么 Chrome 会将某些非空对象解释为null
将其添加到字符串中。
有谁知道隐式对象到字符串的转换实际上是如何工作的?并不是说这是一个阻碍,但它真的让我想知道。
编辑:我没有包含 JSFiddle,因为这发生在一些依赖非常重的类中,所以没有合适的最小工作示例我可以为您提供。无论如何,这个问题并不涉及我的代码,它是相当基础和技术性的。
另一个编辑:为了完整起见,我添加了我在评论中发布的屏幕截图。