3

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

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

Array.join这本书甚至在 Core Javascript Reference 文档中也继续使用,但它可能意味着Array.prototype.join, 而且,它似乎暗示Array有一个length属性,但它实际上也应该是 , 的一个属性Array.prototype,并且是Array.prototype.length?

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

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

但我认为通常不会这样做(定义可以在实例上调用的类方法)。

4

1 回答 1

1

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

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

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

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

于 2012-10-07T18:07:56.393 回答