a===1 && a===2 && a===3

2018-08-26  本文已影响0人  WHU_GIS_LJ

1. a==1 && a==2 && a==3

let a = {
  value: 0,
  toString() {
    return  ++ a.value
  }
}
console.log(a == 1) //true
console.log(a == 2) //true
console.log(a == 3) //true

2. obj.a===1 && obj.a===2 && obj.a===3

2.1 劫持js对象的getter

let obj = {
  value: 1
}
Object.defineProperty(obj,'a', {
  get() {
    return this.value ++
  }
})
console.log(obj.a === 1) // true
console.log(obj.a === 2) // true
console.log(obj.a === 3) // true
2.2利用es6的代理proxy
let obj = {
  value: 1
}
let proxy = new Proxy(obj, {
  get(target, key, receiver) {
    if(key === 'a') {
      return target.value ++
    } 
  }
})
console.log(obj.a === 1) // true
console.log(obj.a === 2) // true
console.log(obj.a === 3) // true
上一篇 下一篇

猜你喜欢

热点阅读