在Javascript中,Array.join真的是Array.prototype.join吗?



我想知道为什么即使在Javascript Definitive Guide第6版,O'Reilly,第149-150页,它仍然使用Array.join()Array.concat()。 应该Array.prototype.join()吗?

但是,虽然Chrome没有定义Array.join,但Firefox实际上有,并且可以由Array.join(array, string)调用。 区别可能很重要,因为一个是类方法,另一个是实例方法。 我想知道这是为什么?

这本书甚至在核心Javascript参考文档中也继续使用Array.join,但也许它的意思是Array.prototype.join,而且,它似乎表明Array具有length属性,但它实际上也应该是Array.prototype的属性,并且Array.prototype.length吗?

顺便说一句,似乎Firefox对Array.prototype.join的实现可以是

Array.prototype.join = function(s) {
    return Array.join(this, s);
}

但我没有看到通常这样做(定义可以在实例上调用的类方法)。

FireFox 将原型化方法的一个版本放在相关的构造函数上。

这不是 ECMAScript

标准的一部分,而是 ECMAScript 的特定 JavaScript 超集的一部分。

这本书

应该做出这样的区分,除非这本书专门讨论JavaScript扩展。

请记住,JavaScript !== ECMAScript。ECMAScript 是语言标准,JavaScript 是该标准第 3 版的实现,并且包含标准未指定的超集功能。

最新更新