我可以通过
创建一个数字var n1 = 1;
或
var n1 = Number(1);
与字符串相同
var s1 = 'string1';
或
var s1 = String('string1');
在什么情况下,人们想要使用全局对象而不是更简单的方式。
编程时,JavaScript全局对象字符串和数字是否有用?
同样适用于
Regexp, Boolean, Function
这些是否有任何目的可以使用适当的语法实例化?
答案 0 :(得分:2)
让它们可用允许我们扩展它们。例如,如果浏览器没有实现它,您可以自己添加Array.isArray
方法。
Array.isArray = function( arr ) {
return Object.prototype.toString.apply( arr ) === '[object Array]';
};
这对大多数填料来说都很好。
另一个很好的例子是字符串上的trim
方法。
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
};
否则,没有其他用途。使用+
可以更好地转换为数字,使用'' +
等更好地转换为字符串。
我经常使用的唯一一个是Regexp
,因为它new Regexp
很方便(为了保存变量,因为需要更少的转义,或者因为它允许在多个中分解正则表达式线)。
编辑:我只想到了另一种用途:
arr.filter( Boolean ); // Removes falsy values from the array "arr"
arr.map( Number ); // Converts every element of the array to a Number
答案 1 :(得分:1)
当Number()
作为函数调用时,它会对作为参数传递的值执行类型转换。 String()
也是如此。 String(10)
会将数字10
转换为字符串'10'
var n1 = 1;
// => 1
var n2 = 's';
// => 's'
可是:
var n3 = Number(1);
// => 1
var n4 = Number('s');
// => NaN
答案 2 :(得分:1)
来自the MDN:
Number对象的主要用途是:
如果参数无法转换为数字,则返回NaN。
在非构造函数上下文中(即没有new运算符),Number 可用于执行类型转换。
更一般地说(我邀请你阅读MDN中另一个包装类的文档),这些类用于执行类型转换或断言。
答案 3 :(得分:1)
还有第三个:
var s1 = new String('string1');
简写var s1 = 'string'
实际上是上述行的简写。它们几乎是一样的。
你给的另一行,
var s1 = String('string1');
,实际上是一个类型转换。你将字符串类型转换为字符串,这是没有意义的。但你也可以写:
var s1 = String(10);
,在这种情况下,你将数字10的类型转换为字符串,这显然与字符串到字符串的类型形成对比。
答案 4 :(得分:1)
在基元上使用对象有几个优点。
1)对象可以有方法。像"hello world".length
这样简单的东西将会出现#34; autobox"对象的原始字符串,因此可以使用length属性。
2)使用String
和Number
构造函数是一种转换为字符串/数字的方法,尽管通常有更好的方法。