1、首先看一下 对象 转原始类型 是如何转换的
对象转原始类型,会调用内置的[ToPrimitive]函数,对于该函数而言,其逻辑如下:
1、如果Symbol.toPrimitive()方法,优先调用再返回
2、调用valueOf(),如果转换为原始类型,则返回
3、调用toString(),如果转换为原始类型,则返回
4、如果都没有返回原始类型,会报错
var obj = {
value: 3,
valueOf() {
return 4;
},
toString() {
return '5'
},
[Symbol.toPrimitive]() {
return 6
}
}
console.log(obj + 1); // 输出7
2、实现 if (a == 1 && a == 2)
var a = {
value: 0,
valueOf: function() {
this.value++;
return this.value;
}
};
console.log(a == 1 && a == 2);//true