1、对象在与字符串拼接或比较时,首先会通过valueOf()方法来调用其原始值。原始值即其本身的值。
var a ={};
console.log(a.valueOf());// {}
console.log(a === a.valueOf());// true
console.log(typeof a.valueOf());// object
2、如果值为对象,则会调用toString()方法。若对象本身没有该方法,会返回"[object ObjectName]",其中 ObjectName 是对象类型的名称。
var a = {};
console.log(a.toString());// [object Object]
console.log(a.toString() + 1);// [object Object]1
console.log(a + 1 === a.toString() + 1);// true
3、该对象obj下如果有toString()方法,会调用该方法。
var a = {
toString(){
return 1;
}
};
console.log(a.toString());// 1
console.log(a.toString() + 1);// 2
console.log(a + 1 === a.toString() + 1);// true
4、通过以上三点推断出:对象每进行一次比较或拼接都会执行toString方法。
var num =1;
var a = {
toString(){
return ++num;
}
};
console.log(a+"");// 2
console.log(a+"");// 3
console.log(a + 1);// 5
console.log(a == 5);// true
5、现在再来看下答案是不是很简单了?
var a = {
i: 1,
toString: function () {
return a.i++;
}
}
if (a == 1 && a == 2 && a == 3) {
console.log(1);
}
————————————————
版权声明:本文为CSDN博主「张培跃吧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012149969/article/details/88983321
网友评论