为什么似乎不推荐使用String.prototype.substr()?

时间:2018-10-04 06:21:52

标签: javascript standards ecma

在ECMAScript标准here中提到:

  

...这些功能不被视为核心ECMAScript的一部分   语言。程序员不应使用或假定存在这些   编写新的ECMAScript代码时的功能和行为。 ECMAScript   不鼓励实现这些功能   除非该实现是网络浏览器的一部分,或者需要   运行Web浏览器遇到的相同旧ECMAScript代码。

MDN上还有一个红色警告:String.prototype.substr() MDN doc

有人知道为什么(ECMAScript标准说)程序员不应该使用或假设存在String.prototype.substr吗?

1 个答案:

答案 0 :(得分:8)

因为它从来都不是标准化语言的一部分。它根本没有出现在ECMAScript 1或2规范中,仅出现在B.2节(“其他属性”)(以及类似附件中的后续版本)的ECMAScript 3中,该消息说:

  

某些ECMAScript实现包含一些标准本机对象的其他属性。该非规范性附件为此类属性建议了统一的语义,而没有使这些属性或其语义成为本标准的一部分。

此外,substrsubstring基本上是多余的,但是第二个参数和slice的含义也不同。

用务实的话,如果您发现没有提供它的主流JavaScript引擎,我会感到惊讶。