我不知道为什么即使在Javascript权威指南第6版,O'Reilly,p. 149 - 150,它仍然使用Array.join()
或Array.concat()
。应该是Array.prototype.join()
而不是?在Javascript中,是否Array.join真的是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);
}
,但我没有看到通常正在做(定义一个类的方法,可以在一个实例调用)。
方法在原型上定义但是在“类”上执行的情况不是这种情况吗? –
如果你的意思是'[] .join',那么它就是原型。 'Array.join'的确有误导性。我也看到了'Array#join'作为这种方法的符号。 – pimvdb
我认为这只是O'Reilly方面的表示法/术语的一个错误选择。该部分的介绍明确指出所讨论的方法在原型对象上;但是,出于某种原因,他们会使用不正确的方式来指示您注意到的情况。 – Pointy