重複の可能性:
javascriptの配列のようなオブジェクト
Javascriptには、配列のようなオブジェクトであるネイティブオブジェクトがあります(引数、NodeListなど)。
私が知りたいのですが:
- 配列のようなオブジェクトを作成する利点は何ですか?
- (通常の配列オブジェクトを作成するのではなく)配列のようなオブジェクトを作成することをお勧めするのはいつですか?
重複の可能性:
javascriptの配列のようなオブジェクト
Javascriptには、配列のようなオブジェクトであるネイティブオブジェクトがあります(引数、NodeListなど)。
私が知りたいのですが:
あなたはそれを間違った側から見ています:Java(Live)Scriptの初期のバージョンには配列がなく、オブジェクトだけがありました。実際、配列は拡張オブジェクトです(インデックスは内部で文字列に変換されます!)。つまり、配列はオブジェクトであり、オブジェクトのようarguments
です...いくつかの重複、いくつかの違いがあります...
あなたの質問に答えるために:あなたは実際にオブジェクトを作ることは決してできません、それarguments
は単に関数に固有のものであり、あなたはそれらを読み取り専用オブジェクトとして扱うべきです。
NodeListはオブジェクトであり、のようなものによって返されます。document.getElementsByTagName('a');
それらの利点は、(もちろんIEを除いて)いくつかのきちんとしたメソッドが付属していることです。
var inputs = document.getElementsByTagName('input');
var userNameIn = inputs.namedItem('username');//Arrays don't have this
では、いつ何を使うべきですか?さて、ノードの扱い:10回のうち9回はノードリストを使用するのが最適です。引数オブジェクトは、関数内で必要なものです。JSは関数型言語なので、たくさん必要です。
そうは言っても、それはそれほど重要ではありません。次のようなコードに出くわした可能性があります。
var myArgs = Array.prototype.slice.apply(arguments,[0]);
これは、Arrayプロトタイプからsliceメソッドを借用し、argumentsオブジェクトのメソッドであるかのように呼び出します。
本当に言うことはそれだけです。ここに決定的な答えはありません、ただその古いマントラです:あなたの腸の感覚で行きなさい。試して、失敗して、学び、もう一度やり直してください。
何をするにしても、プロトタイプ(またはインスタンス)メソッドを借りることができ、すべてがマザーのObject.prototypeプロトタイプにまでさかのぼることを知っておいてください。