这里主要解决两个问题:
如何让
if(a == 1 && a == 2)
条件成立?
这里使用的是对象,我们让a是一个对象,利用
对象转原始类型的作用:
对象转原始类型,会调用内置的
[ToPrimitive]
函数,对于该函数而言,其逻辑如下:
1
)如果
Symbol.toPrimitive()
方法,优先调用再返回
2
)调用
valueOf()
,如果转换为原始类型,则返回
3
)调用
toString()
,如果转换为原始类型,则返回
4
)如果都没有返回原始类型,会报错。
注意我们在调用valueOf()的时候要return出去一个值:
var obj = {
value: 3,
valueOf() {
return 4;
},
toString() {
return '5'
},
[Symbol.toPrimitive]() {
return 6
}
}
console.log(obj + 1); // 输出7
看这个例子
所以对于本题来说:
var a = { value: 0,
valueOf: function() {
this.value++;
return this.value; }
};
console.log(a == 1 && a == 2);//true
这就是对的了。