我想知道为什么即使在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 版的实现,并且包含标准未指定的超集功能。