2015-10-07 20 views
1

我正在阅读字符串文字和字符串对象之间的区别。见 What is the difference between string literals and String objects in JavaScript?在JavaScript中是一个字符串文字的对象?

但我有点困惑,因为它解释说你可以使用字符串对象的方法,但技术上是一个字符串字符串字符串对象?我不问我们是否可以使用相同的方法,只要字符串文字是一个对象。谢谢!

+0

不,字符串不是对象,但为了一致性,Javascript允许我们使用它,就好像它是对象一样。当在字符串上调用一个方法时,它在String对象中被装箱。 – Tushar

回答

-2

技术上不行,但每个文字字符串都可以应用字符串方法和函数。例如。

alert("Literal String".toUpperCase()); 

因此,对于所有意图和目的,一个字符串文字可以像一个String对象,而你不必做的事情一样var ls = new String("Literal String");;当正确应用时,可以制作非常优雅的代码。

凡可能会咬你使用typeof操作,在这种情况下,你会看到他们是不同的,当是。

2

术语“字符串文字”是指用于直接在代码中表示字符串值的语法约定。

代码

"Hello Everyone" 

是字面用于与14个字符的字符串的字符串。

通过字符串文字表示的值是原始的字符串。这不是一个对象。这就是为什么如果你使用:

typeof "Hello Everyone" 

这将返回值"string",不"object"

JavaScript允许任何字符串基元以促进他们到在某些情况下字符串对象的boxing。尝试在字符串值上调用方法是这些情况之一。所以,如果你拨打:

"Hello Everyone".toUpperCase() 

该文字表示的值将被装箱到一个字符串对象,该方法将在该对象上调用。

+0

非常感谢你的明确答案:) – GniruT

0

您可以使用typeof运算符检查Javascript变量的类型。 typeof "Hello World"typeof String("Hello World")都返回类型“字符串”。

此外,严格的平等检查"Hello" === String("Hello")返回true,这意味着他们不只是价值相等但类型相同。

但是,typeof new String("Hello World")返回“object”。

相关问题