我在使用 JavaScript 中的 + 运算符进行隐式强制时遇到问题。即valueOf和toString的优先顺序。
var obj = {};
obj.toString();
=>“[对象对象]”
obj.valueOf();
=> 对象 {}
'Hello ' + obj;
=>“你好[对象对象]”
所以 obj 使用 toString() 方法而不是 valueOf() 被隐式强制转换为字符串;
var obj2 = {
toString: function() {
return "[object MyObject]";
},
valueOf: function() {
return 17;
}
};
obj2.toString();
=>“[对象我的对象]”
obj2.valueOf();
=> 17
'Hello ' + obj2;
=> “你好 17”
所以当我重写 toString 和 valueOf 方法时,+ 运算符将强制使用 valueOf。
我错过了什么?谢谢。