3

Javascript Definitive Guide 6th ed、O'Reilly、p。149-150Array.join() 、またはを使い続けArray.concat()ます。Array.prototype.join()代わりに すべきですか?

しかし、Chromeは定義していませんがArray.join、Firefoxは実際に定義しており、によって呼び出すことができますArray.join(array, string)。1つはクラスメソッドで、もう1つはインスタンスメソッドであるため、違いが重要になる場合があります。なんでだろう?

この本Array.joinは、Core Javascript Referenceのドキュメントでも使用され続けていますが、おそらくそれは、を意味しているようです。また、それはプロパティを持っているArray.prototype.joinことを示唆しているようですが、実際には、のプロパティである必要があります。ArraylengthArray.prototypeArray.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 に答える