|
现在要实现 (a === 1 && a === 2 && a === 3 ) 结果为true, 不可以重写对象的toString 或 valueOf 的方法就实现了 需要用 Object.defineProperty 劫持数据 或 ES6 Proxy 代理来,实现结果为true 使用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 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" 总结: 如果是两个等号==, 主要就是考隐式转换,如果是三个等号===,主要就是考 get 数据劫持, 完了,希望这次主题分享大家会喜欢 |
|
|