javascript:原始字符串有方法吗?

Pac*_*ier 10 javascript string primitive

MDN声明:

原始的,原始的价值

不是对象且没有任何方法的数据.JavaScript有5种原始数据类型:string,number,boolean,null,undefined.除了null和undefined之外,所有基元值都具有包围原始值的对象等价物,例如String对象环绕字符串基元.所有原语都是不可变的.

所以,当我们把一个 "s".replace或者"s".anything是它等同于new String("s").replacenew 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)

将工作.


hel*_*dre 6

技术上正确的答案是“不”。

现实世界的答案是“不,但无论如何它都会起作用”。那是因为当你做类似的事情时

"s".replace()
Run Code Online (Sandbox Code Playgroud)

解释器知道您想要实际操作字符串,就好像您是用它创建的一样

var str = new String("s")
Run Code Online (Sandbox Code Playgroud)

因此,就好像你已经这样做了一样。