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

时间:2011-04-22 02:24:01

标签: javascript string primitive

MDN州:

  

原始,原始价值

     

不是对象的数据   没有任何方法。 JavaScript有5个   原始数据类型:字符串,数字,   boolean,null,undefined。随着   所有都是null和undefined的异常   原始值具有对象   环绕着的等价物   原始值,例如一个String对象   包裹字符串原语。所有   原语是不可改变的。

因此,当我们拨打"s".replace"s".anything时,它是否等同于new String("s").replacenew String("s").anything

2 个答案:

答案 0 :(得分:15)

不,字符串原语没有方法。与数字原语一样,JavaScript运行时会通过以下结构将它们提升为完整的“String”对象:

var space = "hello there".indexOf(" ");

在某些语言中(特别是Java,但我认为该术语是常用的),据说该语言在适当的时候“封装”其对象包装器中的原语。由于令牌语法的变幻莫测,数字有点复杂;你不能只说

var foo = 27.toLocaleString();

因为“。”不会被解释为你需要它的方式;但是:

var foo = (27).toLocaleString();

工作正常。对于字符串原语 - 和布尔语,就此而言 - 语法并不含糊,例如:

var foo = true.toString();

会奏效。

答案 1 :(得分:4)

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

现实世界的答案是“不,但无论如何都会有效”。那是因为你做了像

这样的事情
"s".replace()

解释器知道您希望对字符串进行实际操作,就像使用

创建字符串一样
var str = new String("s")

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