if (a == 1 && a == 2 && a == 3) a在什么情况下会打印值?

题目:

let a = ???
if (a == 1 && a == 2 && a == 3) {
  console.log('Congratulations!');
}

开始看到这道题,我也是蒙的,怀疑这有可能实现吗?...
查阅资料发现可以通过Object原型有一个valueOf()方法

valueOf() 方法返回指定对象的原始值。

语法:
object.valueOf()
返回值

返回值为该对象的原始值。


valueOf.png

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()方法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容