题目:
let a = ???
if (a == 1 && a == 2 && a == 3) {console.log('Congratulations!');
}
开始看到这道题,我也是蒙的,狐疑这有可能实现吗?…
查阅材料发现能够通过 Object 原型有一个 valueOf()
办法
valueOf() 办法返回指定对象的原始值。
语法:object.valueOf()
返回值
返回值为该对象的原始值。
javascript 中调用 valueOf()
返回指定对象的原始值,通常咱们不须要去调用它。当遇到要预期到的原始值
的时候,javascript 会本人调用valueOf()
办法。然而,咱们能够通过重写 valueOf
办法,来达到咱们的目标。
实现:
let a = {
val: 0,
valueOf() {return ++obj.val}
}
if (a == 1 && a == 2 && a == 3) {console.log('Congratulations!');
}
总结:
其实咱们的最终目标就是,每次调用 a 的时候,有一个办法去拦挡并从新返回一个新的值。而 javascipt 原生反对的就是 valueOf()
办法。