a为多少时下面if条件成立?
var a=?
if (a == 1 && a == 2 && a == 3) { console.log('ok') }
分析如下
- 要使得a==1 &&a==2 &&a==3
- 那就是 第一次a==1 第二次a==2 第三次a==3
假设为数字,那么首先会调用valueof 其次tostring
那么问题就很简单了
- 第一种 这么做
` var i = 0 var a = {
// toString() {
// return ++i
// }
valueOf() {
return ++i
}
}
if (a == 1 && a == 2 && a == 3) {
console.log('ok')
}
`
-
第二种 object.defineProperty实现 ` var i = 0
Object.defineProperty(window, 'a', { get() { return ++i; } })
if (a == 1 && a == 2 && a == 3) { console.log('ok') } `