我有一个简单的String扩展名转换为数字:
String.prototype.toInt = function(){ return parseInt(this); }
因为没有评论知道你在JS中获得了什么样的价值,所以我很难保护自己,如果我试图将一个数字转换为我认为是字符串的数字。我认为这样可行:
Number.prototype.toInt = function(){ return this;}
但这会返回整个函数。我看到Number中有一个[[PrimitiveValue]]
属性,理想情况下我可以返回,但我无法弄清楚如何访问它(例如this['[[PrimitiveValue]]']
)
答案 0 :(得分:3)
这应该适合你:
Number.prototype.toInt = function (){ return this.valueOf(); };
虽然我必须说,修改原生对象的原型(Array
,String
,Number
等)有许多缺点。功能方法更灵活,容错,即使用parseInt(value)
代替value.toInt()
可以容忍字符串和数字而不会出问题。
答案 1 :(得分:1)
您的方法将值作为盒装Number实例返回,因此您只需将其强制转换为基元。例如,使用一元加运算符:
Number.prototype.toInt = function(){
return +this;
}