gpt4 book ai didi

javascript - Javascript Number对象的方法中的 "this"如何转换为对象的数值?

转载 作者:行者123 更新时间:2023-11-30 13:08:01 25 4
gpt4 key购买 nike

似乎在 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()”)?
我没有在 Number 规范中找到这个功能,我是不是漏掉了什么?
更进一步,这个自动转换的特性是否用在了其他类的对象上?

最佳答案

+ 运算符的操作数都不是字符串,因此 JavaScript 调用 valueOf 隐式转换对象(一个 Number,在本例中) 到原始值,以便执行数字加法。引用大卫·弗拉纳根的话:

If the object has a valueOf() method that returns a primitive value, JavaScript converts (if necessary) that primitive value to a number and returns the result.

因此,this 被隐式转换为其原始值。

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

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

那么您的函数将改为提醒 11

关于javascript - Javascript Number对象的方法中的 "this"如何转换为对象的数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com