gpt4 book ai didi

javascript - 使用字符串添加时,JavaScript 对象如何转换为字符串?

转载 作者:行者123 更新时间:2023-11-29 22:14:07 26 4
gpt4 key购买 nike

当我记录类似 console.log('' + {}); 的内容时,控制台将在 Chrome 中打印 [Object object],但有些不同的内容({}) 在节点中。此时我会认为控制台输出取决于执行环境。

但是,最近我发现,给定一些 not-null 对象 foo,我以某种方式让 Chrome 打印 null 而不是预期的输出多于。所以使用 console.log('' + foo); 导致控制台中出现 null。这怎么可能?我的第一个猜测是我一定是不小心覆盖了一些重要的东西,比如一些 toString() 方法。否则我无法解释为什么 Chrome 将某些非空对象添加到字符串时将其解释为 null

有谁知道隐式对象到字符串的转换实际上是如何工作的?这并不是说这是一个表演障碍,但它确实让我感到奇怪。

编辑: 我没有包含 JSFiddle,因为这发生在一些非常依赖的类中,所以我无法为您提供适当的最小工作示例。这个问题无论如何都不涉及我的代码,它是相当基础和技术性的。

另一个编辑:为了完整起见,我添加了 screenshot我在评论中发帖了。

最佳答案

由于您询问了对象到字符串的转换:Object.toString

如果您在字符串连接表达式中使用对象,它将调用对象的 toString() 函数。您可以实现自己的功能,这可能会导致您描述的问题:

function Foo(bar){
this.bar = bar;
}
Foo.prototype.toString = function fooToString(){
return this.bar;
};

console.log('' + new Foo(null)); // null

在没有看到任何代码的情况下,我猜是这个或者它实际上只是字符串 "null"。您说您已经检查了 toString 函数,但要确保您也可以在运行时使用 foo.toString.toSource() 打印它。或者只是通过调试器运行对象并检查它。

关于javascript - 使用字符串添加时,JavaScript 对象如何转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com