前言:
此刻朋友们对“js判断变量等于”大体比较重视,姐妹们都想要学习一些“js判断变量等于”的相关内容。那么小编同时在网摘上汇集了一些有关“js判断变量等于””的相关内容,希望大家能喜欢,我们一起来学习一下吧!1.只要 [Symbol.toPrimitive] 接口,第一次返回的值是 1,然后递增,即成功成立:
let a = { [Symbol.toPrimitive]: (function(hint) { let i = 1; //闭包的特性之一:i 不会被回收 return function() { return i++; } })()}console.log(a == 1 && a == 2 && a == 3); //true2.调用 valueOf 接口
let a = { valueOf: (function() { let i = 1; //闭包的特性之一:i 不会被回收 return function() { return i++; } })()}console.log(a == 1 && a == 2 && a == 3); //true3. 正则
let a = { reg: /\d/g, valueOf () { return this.reg.exec(123)[0] }}console.log(a == 1 && a == 2 && a == 3); //true4.利用数据劫持
①Object.defineProperty
let i = 1;Object.defineProperty(window, 'a', { get: function() { return i++; }});console.log(a == 1 && a == 2 && a == 3); //true
②Proxy
let a = new Proxy({}, { i: 1, get: function () { return () => this.i++; }});console.log(a == 1 && a == 2 && a == 3); // true5.数组的 toString 接口默认调用数组的 join 方法,重写数组的 join 方法。
let a = [1, 2, 3];a.join = a.shift;console.log(a == 1 && a == 2 && a == 3); //true6.利用 with 关键字
let i = 0;with ({ get a() { return ++i; }}) { console.log(a == 1 && a == 2 && a == 3); //true}
实际上还有很多方法,工作中用不到,意义也不大。最多笔试时可能遇到。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js判断变量等于