Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Symbol.species

この記事は編集レビューを必要としています。ぜひご協力ください

これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

よく知られたSymbol.speciesシンボルは派生したオブジェクトを作成するために使用されるコンストラクタ関数である関数の値を持つプロパティを指定します。

Symbol.species のプロパテイ属性
書込可能 不可
列挙可能 不可
設定可能 不可

説明

species アクセサプロパティを使うと、オブジェクトの生成に使われるデフォルトコンストラクタを上書きすることができます。

派生クラス MyArray で Array オブジェクトを返すことを考えます。デフォルトコンストラクタを使う map() のようなメソッドを使う際、これらのメソッドが MyArray オブジェクトではなく親の Array オブジェクトを返すようにしたいでしょう。species シンボルを使うと次のように実現できます。

class MyArray extends Array {
  // speciesを親のArrayコンストラクタで上書きする
  static get [Symbol.species]() { return Array; }
}
var a = new MyArray(1,2,3);
var mapped = a.map(x => x * x);

console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array);   // true

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.species の定義
標準 Initial definition.
ECMAScript 2017 Draft (ECMA-262)
Symbol.species の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 未サポート 41 (41) 未サポート 未サポート 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート 41.0 (41) 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: unarist, shide55
 最終更新者: unarist,