数字和字符串全局对象的用途?

时间:2012-09-04 18:08:53

标签: javascript

我可以通过

创建一个数字
var n1 = 1;

var n1 = Number(1);

与字符串相同

var s1 = 'string1';

var s1 = String('string1');

在什么情况下,人们想要使用全局对象而不是更简单的方式。

编程时,JavaScript全局对象字符串和数字是否有用?

同样适用于

Regexp, Boolean, Function

这些是否有任何目的可以使用适当的语法实例化?

5 个答案:

答案 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)使用StringNumber构造函数是一种转换为字符串/数字的方法,尽管通常有更好的方法。