|
面试题:
题目:实现 (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> |
|
|