MDN州:
原始,原始价值
不是对象的数据 没有任何方法。 JavaScript有5个 原始数据类型:字符串,数字, boolean,null,undefined。随着 所有都是null和undefined的异常 原始值具有对象 环绕着的等价物 原始值,例如一个String对象 包裹字符串原语。所有 原语是不可改变的。
因此,当我们拨打"s".replace
或"s".anything
时,它是否等同于new String("s").replace
和new String("s").anything
?
答案 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")
因此就好像你已经这样做了。