原始字符串有方法

javascript: do primitive strings have methods?

本文关键字:有方法 字符串 原始      更新时间:2023-09-26

MDN状态:

原始值

不是对象的数据没有任何方法。JavaScript有5个基本数据类型:字符串、数字、布尔值,null,未定义。与null和undefined的异常原语值有对象的等价物原始值,例如String对象封装字符串原语。所有原语是不可变的。

那么当我们称一个为"s".replace"s".anything时它是否等同于new String("s").replacenew String("s").anything呢?

不,字符串原语没有方法。与数字原语一样,JavaScript运行时将它们提升为成熟的"String"对象,当被以下结构调用时:

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

在某些语言中(特别是Java,但我认为这个术语很常用),据说语言在适当的时候将原语"包装"在对象包装器中。对于数字,由于标记语法的变幻莫测,它有点复杂;你不能只说

var foo = 27.toLocaleString();

因为"。"不会按照你需要的方式被解释;然而:

var foo = (27).toLocaleString();

工作好。使用字符串原语—还有布尔值—语法没有歧义,所以例如:

var foo = true.toString();

技术上正确的答案是"no"。

现实世界的答案是"不,但无论如何它都会工作"。这是因为当你执行

这样的操作时
"s".replace()

解释器知道你想对字符串进行实际操作,就像你用

创建它一样。
var str = new String("s")