解説
Array インスタンスは、 Array.prototype を継承しています。すべてのコンストラクターと同様に、コンストラクターの prototype オブジェクトを変更して、すべての Array インスタンスを変更することができます。例えば、新しいメソッドやプロパティを追加して、すべての Array オブジェクトを拡張することができます。例えば、これはポリフィルに使用されます。
ただし、配列オブジェクトに標準外メソッドを追加すると、後で独自のコードに問題が発生したり、 JavaScript への機能の追加の際に問題が発生することがあります。
豆知識: Array.prototype はそれ自体が Array です。
Array.isArray(Array.prototype); // true
Array.prototype のプロパティ属性 |
|
|---|---|
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |
プロパティ
Array.prototype.constructor- オブジェクトの prototype を生成する関数を指定します。
Array.prototype.length- 配列内の要素数を反映します。
Array.prototype[@@unscopables]withバインディングのスコープから除外されるプロパティ名を保持するシンボル。
メソッド
Mutator メソッド
これらのメソッドは、配列を書き換えます。
Array.prototype.copyWithin()- 配列内で配列内の連続した要素をコピーします。
Array.prototype.fill()- 配列内の指定した開始位置から終了位置までの要素を固定値で埋めます。
Array.prototype.pop()- 配列から最後の要素を取り除き、戻り値として返します。
Array.prototype.push()- 配列の最後に 1 個以上の要素を追加し、新しい配列の長さを返します。
Array.prototype.reverse()- 配列の要素の順番を逆転させます (最初の要素は最後に、最後の要素は最初になります)。
Array.prototype.shift()- 配列から最初の要素を取り除き、その要素を返します。
Array.prototype.sort()- 配列内で要素を整列し、配列を返します。
Array.prototype.splice()- 配列に対して複数の要素を追加したり取り除いたりします。
Array.prototype.unshift()- 配列の最初に 1 個以上の要素を追加し、配列の変更後の長さを返します。
アクセサーメソッド
これらのメソッドは呼び出し対象の配列を書き換えず、配列を何らかの形で表したものを返します。
Array.prototype.concat()- この配列に他の配列や値を結合して新しい配列を返します。
Array.prototype.includes()- この配列が特定の要素を含むかどうか判定し、その結果を
trueまたはfalseで返します。 Array.prototype.indexOf()- 指定された値と等しい値を持つ最初の (添字の一番小さい) 要素の添字を返します。見つからない場合、-1 を返します。
Array.prototype.join()- 配列のすべての要素を結合した文字列を返します。
Array.prototype.lastIndexOf()- 指定された値と等しい値を持つ最後の (添字の一番大きい) 要素の添字を返します。見つからない場合、-1 を返します。
Array.prototype.slice()- 配列の一部を取り出して新しい配列として返します。
Array.prototype.toSource()- 指定された配列を表す配列リテラルを返します。この値を使って新しい配列を作れます。
Object.prototype.toSource()メソッドを上書きしています。 Array.prototype.toString()- 配列とその要素を表す文字列を返します。
Object.prototype.toString()メソッドを上書きしています。 Array.prototype.toLocaleString()- 配列とその要素を表すロケールに従った文字列を返します。
Object.prototype.toLocaleString()メソッドを上書きしています。
反復メソッド
いくつかのメソッドは、配列を処理する際にコールバックされる関数を引数に取ります。これらのメソッドが呼ばれる時、配列の length 値を一時記憶するため、コールバック中にこの長さを超えて追加された要素にはアクセスしません。配列に対するその他の変更 (要素の値の書き換えや削除) は、変更された要素にメソッドが後でアクセスした場合の操作結果に影響を及ぼす可能性があります。そのような場合におけるこれらのメソッドの振る舞いは正確に定義されていますが、コードの読者を混乱させないよう、その振る舞いに依存すべきではありません。配列を変化させなければならない場合は、代わりに新しい配列にコピーしてください。
Array.prototype.entries()- 新しい
Array Iteratorオブジェクトを返します。このオブジェクトは、配列中の各インデックスに対する key/value ペアを保持しています。 Array.prototype.every()- 指定したテスト関数を配列中のすべての要素が満たした場合に
trueを返します。 Array.prototype.filter()- 指定したフィルタリング関数が
trueを返す、配列中の要素を格納した新しい配列を生成します。 Array.prototype.find()- 指定したテスト関数を満たす、配列中の要素の値を返します。1 個も見つからない場合は
undefinedを返します。 Array.prototype.findIndex()- 指定したテスト関数を満たす、配列中の要素のインデックスを返します。1 個も見つからない場合は
-1を返します。 Array.prototype.forEach()- 配列中のそれぞれの要素について関数を呼び出します。
Array.prototype.keys()- 新しい
Array Iteratorを返します。このオブジェクトは配列中の各インデックスのキーを保持します。 Array.prototype.map()- 配列内のすべての要素に対して与えられた関数を呼び出し、その結果を格納した新しい配列を生成します。
Array.prototype.reduce()- アキュムレータと配列内のすべての要素に対して (左から右の順で) 関数を適用し、単一の値に還元します。
Array.prototype.reduceRight()- アキュムレータと配列内のすべての要素に対して (右から左の順で) 関数を適用し、単一の値に還元します。
Array.prototype.some()- 指定したテスト関数を配列中の少なくとも 1 個の要素が満たした場合に
trueを返します。 Array.prototype.values()- 新しい
Array Iteratorオブジェクトを返します。このオブジェクトは、配列中の各インデックスの値を保持します。 Array.prototype[@@iterator]()- 新しい
Array Iteratorオブジェクトを返します。このオブジェクトは、配列中の各インデックスの値を保持します。
ジェネリックメソッド (非標準)
JavaScript の Array オブジェクト上の多くのメソッドは、配列型 (array-like) のあらゆるオブジェクトに対し広く適用されるよう設計されています。すなわち、どんなオブジェクトでも length プロパティを持ち、数値プロパティ名を使う (array[5] のような) アクセスが有効なら、それらを適用できます。join のような一部のメソッドは、呼び出し対象オブジェクトの length や数値プロパティを読み取るだけです。 一方、reverse のようなメソッドは、対象オブジェクトの数値プロパティや length が変更可能であることを要求するため、length プロパティや設定される合成数値プロパティの変更を許さない String のようなオブジェクトに対して呼び出すことができません。
仕様書
| 仕様書 | 状態 | 備考 |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | 標準 | 初回定義 |
| ECMAScript 5.1 (ECMA-262) Array.prototype の定義 |
標準 | |
| ECMAScript 2015 (6th Edition, ECMA-262) Array.prototype の定義 |
標準 | copyWithin(), fill(), entries(), keys(), values(), find(), findIndex() メソッドを追加 |
| ECMAScript 2016 (ECMA-262) Array.prototype の定義 |
標準 | includes() メソッドを追加 |
| ECMAScript (ECMA-262) Array.prototype の定義 |
現行の標準 |
ブラウザーの対応
No compatibility data found. Please contribute data for "javascript.builtins.Array.prototype" (depth: 1) to the MDN compatibility data repository.