String(x)和''之间有区别吗?

时间:2015-07-24 22:11:16

标签: javascript

有区别吗?字符串2会继承不同的对象原型吗?

ID   LINKID
A    B
C    D
E    F

由于

4 个答案:

答案 0 :(得分:4)

var s1 = 1234 + '';

创建一个字符串文字。这是一个javascript语言原语。

var s2 = String(1234);

String()函数也返回一个原始字符串文字。 s2将具有与s1相同的成员,因为它们都是相同的类型。

然而

var s3 = new String("1234");

将创建String类型的对象而不是原始字符串文字。这确实有不同的成员,并且是object类型。

答案 1 :(得分:2)

同样的事情!

var s1 = 1234 + '';
var s2 = String(1234);

typeof s1   //string
typeof s2   //string

答案 2 :(得分:1)

两者的行为方式相同。

此外,这里有关于字符串原语与对象的一个​​很好的解释:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

  

字符串基元和字符串对象之间的区别

     

[...]字符串文字(用双引号或单引号表示)和非构造函数上下文中的String调用返回的字符串(即不使用new关键字)是原始字符串。 JavaScript自动将原语转换为String对象,因此可以将String对象方法用于原始字符串。 [...]

答案 3 :(得分:0)

Javascript允许您将原始值视为对象。它是通过对基元进行原始强制执行来实现的。这就是为什么,即使基元没有属性,这样的东西也很好:

"abcde".substr(1,3); //bcd
true.valueOf(); //true