题目:var a=?
满足a==1 && a==2 && a==3
解题思路:
利用==比较会转换数据类型,而对象转数字会经历一个详细步鄹[Symbol.toPrimitive]->valueOf->toString
let a = new Proxy(
{ v: 1 },
{
get(target, property, receiver) {
// 隐式转换会调用 Symbol.toPrimitive,这是一个函数
if (property === Symbol.toPrimitive) {
// 函数属性,所以要返回一个函数,会被自动执行
return () => target.v++
}
}
}
)
// 测试
if (a == 1 && a == 2 && a == 3) {
console.log(a)
}
// 打印:Proxy {v: 4, ...}