因为它从来都不是标准化语言的一部分。它根本不在 ECMAScript 1 或 2 规范中,只出现在 ECMAScript 3 的第 B.2 节(“附加属性”)中(以及直到今天的类似附件中的后续版本[撰写本文时的 ES2022 草案]) ,其中说:¹
ECMAScript 的一些实现包含一些标准本机对象的附加属性。该非规范性附件建议此类属性的统一语义,而不使属性或其语义成为本标准的一部分。
此外,在很大程度上与andsubstr
是多余的,但第二个参数具有不同的含义,。substring
slice
从实用的角度来说,如果你发现一个完整的主流 JavaScript 引擎没有提供它,我会感到惊讶。但如果针对嵌入式/受限环境使用的 JavaScript 引擎没有提供它,我不会感到惊讶。
¹ 该措辞最近更改为:
当 ECMAScript 主机是 Web 浏览器时,需要本附件中定义的 ECMAScript 语言语法和语义。如果 ECMAScript 主机不是 Web 浏览器,则本附件的内容是规范的,但可选的。
注意 本附件描述了 Web 浏览器 ECMAScript 主机的各种遗留特性和其他特性。本附件中规定的所有语言特性和行为都有一个或多个不受欢迎的特性,如果没有遗留使用,将从本规范中删除。然而,大量现有网页对这些功能的使用意味着网络浏览器必须继续支持它们。本附件中的规范定义了对这些遗留功能的互操作实现的要求。
这些功能不被视为核心 ECMAScript 语言的一部分。程序员在编写新的 ECMAScript 代码时不应使用或假设存在这些特性和行为。不鼓励 ECMAScript 实现实现这些功能,除非该实现是 Web 浏览器的一部分,或者需要运行 Web 浏览器遇到的相同的遗留 ECMAScript 代码。