所以我正在阅读一本 Js 的书,并遇到了对象到原始转换这个美丽的话题。作者在书中说
由于历史原因,如果 toString 或 valueOf 返回一个对象,则没有错误,但该值会被忽略(就像该方法不存在一样)。那是因为在古代,JavaScript 中没有好的“错误”概念。
现在我尝试了这个,但没有像书中所说的那样:
let user = {
name: "John",
money: 1000,
toString(){
return {
name: 'Bong'
};
}
};
alert(user);
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到错误消息:
未捕获的类型错误:无法将对象转换为原始值
但是,如果我这样做
alert(user.toString());
Run Code Online (Sandbox Code Playgroud)
然后没有错误,它给出了[Object object]
请解释这种行为。