如何"这个“;在Javascript的方法中,Number对象被转换为对象的数值

How "this" in methods of Javascript Number objects be converted to the numeric value of the object?

本文关键字:对象 Number 转换 方法 这个 quot 如何 Javascript      更新时间:2023-09-26

似乎在Number对象中,可以使用"this"而不是this.valueOf()或类似"this.value"的东西直接引用数值,例如:

Number.prototype.printPlusOne=function(){ 
      var tmp=this+1;
      alert(tmp); 
}
var n=new Number("5");
n.printPlusOne();  

为什么这是可能的(在上面的加法中直接使用"this"而不是"this.valueOf()")
我在号码规范中没有找到这个功能,我遗漏了什么吗
此外,这种自动转换功能是否用于其他类别的对象?

+运算符的两个操作数都不是字符串,因此JavaScript调用valueOf将Object(在本例中为Number)隐式转换为基元值,以便执行数字加法。引用David Flanagan:

如果对象有一个返回基元值的valueOf()方法,JavaScript会将该基元值转换(如有必要)为数字并返回结果。

因此,this被隐式地转换为其基元值。

如果你做了一些愚蠢的事情,比如覆盖Number.valueOf:

Number.prototype.valueOf = function() {
    return 10;
}

则您的函数将提醒11

不确定你想在这里完成什么,但是:

Number.prototype.print=function(){ 
      alert(this.valueOf()); 
}
var n=new Number("5");
n.print();