Я думаю, что valueOf
предпочтительнее, поскольку преобразование Number
предназначено для использования со значениями, которые еще не являются Number
объектами, но более того - Number(x)
вызовет метод valueOf
для x
по сути, вы бы добавили ненужный сахар / накладные расходы, где valueOf
- это совершенно приемлемый способ получения примитивного представления объекта (Number
в вашем случае).
В качестве примечания:
Для справки, я имею дело с этим в методе Number.prototype, где я могу быть уверен, что это всегда объект Number.
это не правильно, поскольку всегда есть вероятность, что кто-то сделает что-то вроде этого:
Number.prototype.test = function()
{
console.log(this);
}
var x = new Number(10);
x.test();
var foo = x.test;
foo();
, конечно, предоставит:
Number
DOMWindow
в качестве вывода.Вам решать, хотите ли вы защищаться от этого.