1

内部的には、JavaScript にはオブジェクト (およびプリミティブ型) しかありません。オブジェクトはペアの順序付けられていないコレクションです。ここで、は文字列で、任意の JavaScript タイプにすることができます。key:valuekeyvalue

配列は、外見上は他の言語の通常の配列のように見えますが、実際にはオブジェクトの特殊なケースであり、言語構文がネイティブにサポートされています。

各配列は、キーが数値で値が任意の型になるオブジェクトです。キーは JavaScript 自体によって管理されるため、配列を順序付けられた値のコレクションとして操作できます。これが、for-inループでも配列を使用できる理由です。さらに、JavaScript は、番号付きキーを使用して処理を行うメソッドとして、標準の配列操作 (長さ、indexOf、スプライス、スライス、結合) を提供します。

>>> typeof []
"object"

>>> Object.prototype.toString.call([])
"[object Array]"

私の理解は正しいですか、それとも何か不足していますか?

4

1 に答える 1

0

ここで見落としていたことの 1 つは、数値インデックス自体が単に配列オブジェクトの名前付きプロパティであり、基になる順序がないことです。

覚えておく価値のあるもう 1 つのことは、Array コンストラクターを変更できることです。これは、その時点からすべての配列に影響を与えます。

次の点を考慮してください。

var a = new Array(1,2,3,4,5);
a.slice(1); // returns [2,3,4,5]

//Now for some prototype modification
Array.prototype.slice = function(){alert("Foo");};

var b = new Array(1,2,3,4,5);
a.slice(1); // alerts "Foo"!

//The [] syntax is also affected
var c = [1,2,3,4,5];
c.slice(1); // alerts "Foo"!
于 2012-11-26T07:45:26.383 に答える