Javascript:通过不同的方法创建字符串

时间:2011-11-21 18:28:44

标签: javascript

On Firebug:

>>> str1 = String('String One');
"String One"
typeof(str1);
"string"

>>> str2 = new String('String Two');
String { 0="S", 1="t", 2="r", more...}
typeof(str2);
"object"

我的问题是两种技术之间的区别是什么? 一个优于另一个的优势是什么?

4 个答案:

答案 0 :(得分:2)

唯一真正的区别是使用new String(),你会得到一个从Object延伸的对象,这意味着这段代码可以工作:

var foo = new String( 'bar' );
foo.property = 42;

而这不是:

var foo = 'bar';
foo.property = 42;

如果您需要获取字符串,它有时也很有用:

var foo = new String( 21*2 );

答案 1 :(得分:1)

这种方式确实没有太大优势,因为几乎没有人以这种方式创建字符串,只是声明var a = 'This is a string';这类似于创建数组的可接受方式不是{ {1}}但是var a = new Array()。我想第一种方式可能有优势,因为它被标记为字符串而不是对象,但

var a = []

答案 2 :(得分:0)

在第一个示例中,您获得了返回类型的String();
在第二个中,您获得了类型的String()本身 /或更准确地说是新String()实例的类型。

更多信息:
 http://www.w3schools.com/jsref/jsref_String.asp
 http://www.w3schools.com/jsref/jsref_obj_string.asp

答案 3 :(得分:0)

new String包装器是很久以前为了取悦Java人员而使用该语言的疣。正如您可能已经注意到的那样,这些不一致是很好的理由,为什么它今天不是广泛推荐的做法。

同时,如果您想将值转换为字符串,则使用String(something)非常有用,但大多数人只使用较短的''+something

String('string')是不必要的,因为'string'已经是一个字符串。

tldr 避免使用new String和其他包装,例如new Arraynew Number,就像瘟疫一样。