首页 > 其他 > 详细

怎样使a==1&&a==2&&a==3=true成立

时间:2021-06-03 17:17:47      阅读:10      评论:0      收藏:0      [点我收藏+]

方法一,使用代理(对象的set,get)

let num = 1
Object.defineProperty(window,‘a‘,{

  get(){
    return num++
  },

  set(){

  }
  
})

console.log(a==1&&a==2&&a==3)   // => true

方法二,利用js的隐式转换

如果是 == 两个等号,js会进行隐式转换
js在进行隐式转换的过程中,会调用toString和ValueOf方法(方法是对象原型链上的),向数字和字符串转化,所以,我们可以通过这两个方法,做一些手脚

  • 1.使用toString
let a = {
  num:1,
  toString(){
    return this.num++
  }
}

console.log(a==1&&a==2&&a==3)   // => true
  • 2.使用valueOf
let a = {
  num:1,
  valueOf(){
    return this.num++
  }
}

console.log(a==1&&a==2&&a==3)   // => true

需要注意的是,如果题目是 怎样使a=1&&a=2&&a===3=true成立, 那么就只能使用第一种方法了

怎样使a==1&&a==2&&a==3=true成立

原文:https://www.cnblogs.com/zoo-x/p/14845482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!