如何实现 a == 1 && a == 2同时成立?

方法1:valueOf()或者toString()
原理:利用 宽松相等的隐式类型转换ToPrimitive抽象操作、原型的委托链接机制修改内置类型 Number原型上的 valueOf()或toString()。

var i = 1;
Number.prototype.valueOf = function() {
     return i++;
};

var a = new Number(1);

a == 1 && a ==2  // true

方法2:Object.defineProperty 、get
原理: 利用属性定义符设置属性的get()

var i = 1;
Object.defineProperty(window, 'a', {
    get: function() {
        return i++;
    },
 })

a == 1 & a == 2  // true

有兴趣的小伙伴,可以思考下 a == 2 && a ==1如何成立?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容