实现a == 2 && a ==3 为true

111 阅读1分钟

javaScript为基本数据类型值提供了封装对象,例如Number,String,Boolean等


var a = new Number(3);
typeof a;//"object"
var i = 2
Number.prototype.valueOf = function(){
    return i++
}

console.log(a == 2 && a ==3)//true

image.png

此处a是一个对象,在a的__proto__属性上定义了valueOf的方法用来取得红框内的[[PrimitiveValue]]在这里可以取得3;如果对Number的原型对象方法ValueOf进行重写,在进行访问[[PrimitiveValue]]时将值改为2,并实现++操作,即可实现该需求。