我正在阅读字符串文字和字符串对象之间的区别。见 What is the difference between string literals and String objects in JavaScript?在JavaScript中是一个字符串文字的对象?
但我有点困惑,因为它解释说你可以使用字符串对象的方法,但技术上是一个字符串字符串字符串对象?我不问我们是否可以使用相同的方法,只要字符串文字是一个对象。谢谢!
我正在阅读字符串文字和字符串对象之间的区别。见 What is the difference between string literals and String objects in JavaScript?在JavaScript中是一个字符串文字的对象?
但我有点困惑,因为它解释说你可以使用字符串对象的方法,但技术上是一个字符串字符串字符串对象?我不问我们是否可以使用相同的方法,只要字符串文字是一个对象。谢谢!
技术上不行,但每个文字字符串都可以应用字符串方法和函数。例如。
alert("Literal String".toUpperCase());
因此,对于所有意图和目的,一个字符串文字可以像一个String对象,而你不必做的事情一样var ls = new String("Literal String");
;当正确应用时,可以制作非常优雅的代码。
凡可能会咬你使用typeof
操作,在这种情况下,你会看到他们是不同的,当是。
术语“字符串文字”是指用于直接在代码中表示字符串值的语法约定。
代码
"Hello Everyone"
是字面用于与14个字符的字符串的字符串。
通过字符串文字表示的值是原始的字符串。这不是一个对象。这就是为什么如果你使用:
typeof "Hello Everyone"
这将返回值"string"
,不"object"
。
JavaScript允许任何字符串基元以促进他们到在某些情况下字符串对象的boxing。尝试在字符串值上调用方法是这些情况之一。所以,如果你拨打:
"Hello Everyone".toUpperCase()
该文字表示的值将被装箱到一个字符串对象,该方法将在该对象上调用。
非常感谢你的明确答案:) – GniruT
您可以使用typeof
运算符检查Javascript变量的类型。 typeof "Hello World"
和typeof String("Hello World")
都返回类型“字符串”。
此外,严格的平等检查"Hello" === String("Hello")
返回true,这意味着他们不只是价值相等但类型相同。
但是,typeof new String("Hello World")
返回“object”。
不,字符串不是对象,但为了一致性,Javascript允许我们使用它,就好像它是对象一样。当在字符串上调用一个方法时,它在String对象中被装箱。 – Tushar