题目:
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()
方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。