如何"这个“;在Javascript的方法中,Number对象被转换为对象的数值
How "this" in methods of Javascript Number objects be converted to the numeric value of the object?
似乎在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();
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何将对象数组设置为格式为 { x: {Number}, y: {Number} }?Javascript
- 如果对象具有 NUMBER,如何获取 JSON 数据
- 为什么当我执行这个 JavaScript 语句来创建一个新的 Number 对象(使用 new 运算符)时,Chrome
- JavaScript中习惯的“Number”对象到数字文字的转换
- 是String和Number等对象,被视为“构造函数”
- 将对象转换为字符串或typeof(number[])给定的类型
- 与原始版本相反,任何框架或任何人都需要使用String/Number/Boollean对象的原因是什么
- 这个代码怎么了?我无法扩展Number对象
- 如何"这个“;在Javascript的方法中,Number对象被转换为对象的数值
- 访问以 number 开头的 JavaScript 对象属性