Pac*_*ier 10 javascript string primitive
MDN声明:
原始的,原始的价值
不是对象且没有任何方法的数据.JavaScript有5种原始数据类型:string,number,boolean,null,undefined.除了null和undefined之外,所有基元值都具有包围原始值的对象等价物,例如String对象环绕字符串基元.所有原语都是不可变的.
所以,当我们把一个 "s".replace
或者"s".anything
是它等同于new String("s").replace
和new String("s").anything
?
Poi*_*nty 15
不,字符串原语没有方法.与数字原语一样,JavaScript运行时会通过以下构造将它们提升为完整的"String"对象:
var space = "hello there".indexOf(" ");
Run Code Online (Sandbox Code Playgroud)
在某些语言中(特别是Java,但我认为该术语是常用的),据说该语言在适当的时候"封装"它们的对象包装器中的原语.由于令牌语法的变幻莫测,数字有点复杂; 你不能只说
var foo = 27.toLocaleString();
Run Code Online (Sandbox Code Playgroud)
因为"." 不会被解释为你需要它的方式; 然而:
var foo = (27).toLocaleString();
Run Code Online (Sandbox Code Playgroud)
工作良好.对于字符串原语 - 和布尔语,就此而言 - 语法不含糊,例如:
var foo = true.toString();
Run Code Online (Sandbox Code Playgroud)
将工作.
技术上正确的答案是“不”。
现实世界的答案是“不,但无论如何它都会起作用”。那是因为当你做类似的事情时
"s".replace()
Run Code Online (Sandbox Code Playgroud)
解释器知道您想要实际操作字符串,就好像您是用它创建的一样
var str = new String("s")
Run Code Online (Sandbox Code Playgroud)
因此,就好像你已经这样做了一样。