1、對(duì)象在與字符串拼接或比較時(shí)熙兔,首先會(huì)通過(guò)valueOf()方法來(lái)調(diào)用其原始值住涉。原始值即其本身的值。
var a ={};
console.log(a.valueOf());// {}
console.log(a === a.valueOf());// true
console.log(typeof a.valueOf());// object
2舆声、如果值為對(duì)象媳握,則會(huì)調(diào)用toString()方法蛾找。若對(duì)象本身沒(méi)有該方法,會(huì)返回"[object ObjectName]"打毛,其中 ObjectName 是對(duì)象類型的名稱。
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闹瞧、該對(duì)象obj下如果有toString()方法,會(huì)調(diào)用該方法万牺。
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、通過(guò)以上三點(diǎn)推斷出:對(duì)象每進(jìn)行一次比較或拼接都會(huì)執(zhí)行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扣唱、現(xiàn)在再來(lái)看下答案是不是很簡(jiǎn)單了噪沙?
var? a = {
? ? i: 1,
? ? toString: function () {
? ? ? ? return a.i++;
? ? }
}
if (a == 1 && a == 2 && a == 3) {
? ? console.log(1);
}
————————————————
版權(quán)聲明:本文為CSDN博主「張培躍吧」的原創(chuàng)文章吐根,遵循CC 4.0 BY-SA版權(quán)協(xié)議拷橘,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012149969/article/details/88983321