【发布时间】:2020-07-10 02:03:41
【问题描述】:
let obj = {
valueOf() {
return "2";
}
};
alert(obj);
我认为在没有 toString() 的情况下,valueOf() 将在需要字符串时被调用。
【问题讨论】:
-
为什么你认为 alert 需要一个原语?
+obj给了2,正如预期的那样 -
alert() 不总是将它的参数转换为字符串吗?
-
@jonrsharpe 实际上我确实看到它确实调用 valueOf 如果它没有找到 toString 方法,请查看我的答案。因为这里我们没有创建一个纯对象,所以它在原型上找到 toString 并且不会调用 valueOf。
-
感谢您的链接。我在其中读到,当需要一个字符串值时,将调用 toString(),而 alert() 就是这种情况。但是既然没有 toString() 不应该依靠 valueOf() 吗?
标签: javascript object tostring primitive value-of