方法1:valueOf()或者toString()
原理:利用 寬松相等的隱式類型轉(zhuǎn)換、ToPrimitive抽象操作誓军、原型的委托鏈接機制修改內(nèi)置類型 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
原理: 利用屬性定義符設(shè)置屬性的get()
var i = 1;
Object.defineProperty(window, 'a', {
get: function() {
return i++;
},
})
a == 1 & a == 2 // true
有興趣的小伙伴早处,可以思考下 a == 2 && a ==1如何成立湾蔓?