1

今天看一个教程,我发现了以下内容:

var q2Var1 = "hi there.",
    q2Var2 = String( "another string here." );

q2Var 是“构造函数符号”,而 q2Var 是声明变量的“文字符号”,还是我没有得出正确的结论?

谢谢你。

4

2 回答 2

3

不,它们都不使用构造函数来创建字符串对象。

第一个只是一个字符串原语,第二个是通过String转换函数发送的字符串原语,它将只返回未更改的字符串原语。


转换函数通常用于将String其他事物转换为字符串原语,例如数字:

var s = String(42);

要创建String对象,请使用new关键字:

var s = new String("hi there.");

String对象具有您用于在字符串上使用的所有方法,例如length属性。您也可以在字符串原语上使用它们的原因是,String当您对它们使用方法时,它们会自动转换为对象。

所以这:

var l = "asdf".length;

实际上与以下内容相同:

var l = new String("asdf").length;

转换函数总是返回一个字符串原String语,所以如果你有一个String对象,该函数会将它转回一个字符串原语:

var s = "asdf"; // typeof s returns "string"

var s = new String(s); // typeof s now returns "object"

s = String(s); // typeof s now returns "string"
于 2012-09-27T19:43:05.683 回答
0

我以前从未听说过这些名称,但“构造函数表示法”很可能是 q2Var2 名称,因为您将参数传递给 String 的构造函数。不过,如何称呼它们并不重要,不是吗?:P

于 2012-09-27T19:37:30.087 回答