doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:5394回复:0

[Javascript]实现 (a === 1 && a === 2 && a === 3 ) 结果为true

楼主#
更多 发布于:2021-02-04 10:20
面试题:

题目:实现 (a === 1 && a === 2 && a === 3 ) 结果为true?
   
考点:对于Object.defineProperty方法的理解,扩展:es6 的代理Proxy

参考:Object.defineProperty 方法的理解,请点击

答案:

方法一:

使用Object.defineProperty劫持window对象的a属性的getter方法

var value = 1;
Object.defineProperty(window,"a",{
    get(){
       return this.value++;
    }
});
if (a === 1 && a === 2 && a === 3){
    console.log("hello world")
}
// 测试结果输出了 "hello world"

方法二:

利用es6的代理proxy

<pre class="brush:js;toolbar:false;">var value = 1;
let proxy = new Proxy(window, {
  get(target, key, receiver) {
    if(key === 'a') {
      return target.value ++
    } 
  }
})
if (a === 1 && a === 2 && a === 3){
    console.log("hello world")
}
// 测试结果也输出了 "hello world"</pre>
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号