JavaScript中习惯的“Number”对象到数字文字的转换
Idiomatic `Number` object to number literal conversion in JavaScript
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
哪个是首选选项?使用其中一个比使用另一个有好处吗?
为了记录,我在Number.prototype
的方法中处理this
,在那里我可以确定this
始终是Number
对象。
我认为valueOf
是首选,因为Number
转换意味着与已经不是Number
对象的值一起使用,但此外- Number(x)
将在x
上调用valueOf
方法,因此,从本质上讲,您将添加不必要的糖/开销,其中valueOf
是接收对象的基本表示(在您的示例中为Number
)的完全接受的方式。
作为旁注:
需要说明的是,我是在方法on中处理这个问题的号码。原型,在那里我可以确定这总是一个数字对象。
这是不正确的,因为总是有可能有人会做这样的事情:
Number.prototype.test = function()
{
console.log(this);
}
var x = new Number(10);
x.test();
var foo = x.test;
foo();
当然会提供:
Number
DOMWindow
作为输出。你要决定是否要抵制它
为什么要使用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
相关文章:
- 添加文字和评论功能更新Div
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- 如何将变量而不是文字数字放进去
- 为什么可以对整数变量调用toString(),而不能对文字数字调用
- JavaScript 对象 - 未定义的数字键文字
- 错误:“标识符在数字文字 javascript 之后立即启动”
- 关于数字 文字词汇
- 调用数字文字的成员函数
- 为什么在严格模式下不允许使用八进制数字文字(解决方法是什么?)
- SyntaxError:“;标识符紧接在数字文字“之后开始;
- 如何解决“;标识符紧接在数字文字“之后开始;
- 使用指数的Javascript数字文字
- ValueError:以10为基数的int()无效文字.如何固定字母数字值
- toString只适用于括号或非文字数字
- JavaScript中习惯的“Number”对象到数字文字的转换
- 二传手/吸盘器不适用于数字文字