当我登录诸如console.log('' + {});
之类的东西时,控制台会在Chrome中打印[Object object]
,但在节点中有些不同({}
)。在这一点上,我会认为控制台输出取决于执行环境。使用字符串添加时,JavaScript对象如何转换为字符串?
但是,最近我发现,给予一定的不是空对象foo
,我莫名其妙地有镀铬打印null
代替上述预期的输出。因此在控制台中使用console.log('' + foo);
导致null
。这怎么可能?我的第一个猜测是我必须无意中重写了一些重要的东西,比如一些toString()
方法。否则,我无法解释为什么当Chrome添加到字符串时,Chrome会将一些非空对象解释为null
。
有谁知道隐式的对象到字符串转换实际上是如何工作的吗?这并不是说这是一场表演,但它真的让我感到惊讶。
编辑:我没有包含一个JSFiddle,因为这发生在一些相当重的依赖类中,所以没有我可以为您提供的适当的最小工作示例。无论如何,这个问题并没有提及我的代码,这是相当基础和技术性的。
另一编辑:为了完整起见,我将screenshot添加到评论中。
你有jsFiddle吗? – Dennis 2013-04-27 01:29:23
为什么downvote?评论会很好。至于jsFiddle,不,不幸的不是。这项工作仍未公开。无论如何,我提出这个问题的方式我认为不会有帮助。 – 2013-04-27 01:40:00
为什么你应该总是为这类问题创建一个最小工作示例的一个原因是:在创建示例的过程中,最有可能找到问题的原因。 – Kapep 2013-04-27 01:56:40