直接上案例
//定义一个对象 var a = { _default: 0, //toString 每次访问对象时会自动执行 toString: function () { return ++this._default; } }; if (a == 1 && a == 2 && a == 3) { console.log('成功'); console.log(a._default,'a._default'); console.log(a,'a'); }
打印结果
注意:上面使用的对象属性的toString的返回结果是字符串属性
‘1’ == 1 是成立的
那想 if ( a=== 1 && a === 2 && a===3)让它们之间恒等于怎么操作
我们可以使用getter的方式去操作
var _default = 0; //这个变量是在window的属性上面的 Object.defineProperty(window, 'a', { get() { return ++this._default; } }) // 这里使用的a 是直接在window属性上的 所以我们可以直接使用 if (a === 1 && a === 2 && a === 3) { console.log('成功'); console.log(a); console.log(window); }
这里打印的a是4是因为我们又访问了一次。
window里面是有a属性的,可以仔细找一下