Number
功能> var x = new Number(5)
> x === 5
false
> Number(x) === 5
true
valueOf
方法> var y = new Number(5)
> y === 5
false
> y.valueOf() === 5
true
哪个首选?使用一个优于另一个是否有好处?
为了记录,我在this
的方法中处理Number.prototype
,我可以确定this
始终是Number
对象。
答案 0 :(得分:2)
我认为valueOf
是首选,因为Number
转换意味着与不是Number
个对象的值一起使用,而且 - Number(x)
会调用valueOf
上的x
方法,
基本上,你会添加一个不必要的糖/开销,其中valueOf
是一种完全可以接受的方式来接收对象的原始表示(Number
在你的情况下)。
作为旁注:
为了记录,我正在一个方法中处理这个问题 Number.prototype,我可以确定这始终是一个数字 对象
这是不正确的,因为总有可能有人会做这样的事情:
Number.prototype.test = function()
{
console.log(this);
}
var x = new Number(10);
x.test();
var foo = x.test;
foo();
当然会提供:
Number
DOMWindow
作为输出。这是你决定是否要反抗它。
答案 1 :(得分:0)
为什么使用Number对象?我认为你只是让生活变得困难。要将Number对象转换为数字原语,可以使用'+'运算符:
var x = new Number(5);
var y = new Number(5);
alert(x == y); // false
alert(+x == +y); // true
为了好玩:
Number.prototype.whatIsThis = function() {return typeof this;};
var x = new Number(5);
var y = 5;
alert( x.whatIsThis()); // Object
alert( y.whatIsThis()); // Object
alert( y == x ); // True
alert( y === x ); // False
alert( y === +x ); // True