【JSリファレンス】get Array[@@species]

更新日:2024/06/14

get Array[@@species]は、Arrayコンストラクターアクセサプロパティです。
このプロパティはセッターが定義されていないため、取得のみ行えます。

@@speciesは仕様上の表記です。
プログラムコード上ではSymbol.speciesに置き換えられます。

[ Symbol.species ]は、インスタンスを返すprototypeメソッド等で使用するコンストラクターがセットされています。
Array[Symbol.species]は、this値を返します。

 

■Array[@@species]を使用するメソッド

Array.prototype.concat()
Array.prototype.filter()
Array.prototype.flat()
Array.prototype.flatMap()
Array.prototype.map()
Array.prototype.slice()
Array.prototype.splice()

 

■使用例

 // [Symbol.species]なし
const MyArray1 = class extends Array{
    constructor(...a){
        super(...a);
    }
    toString(){ return "MyArray"; }
}
const array1 = new MyArray1(1,2,3);
 // array1.map() は、MyArray1 を返す
console.log( array1.map(e=>e).toString() ); // MyArray

 // [Symbol.species]あり
const MyArray2 = class extends Array{
    constructor(...a){
        super(...a);
    }
    static get [Symbol.species](){
            return Array;
         }
    toString(){ return "MyArray"; }
}
const array2 = new MyArray2(1,2,3);
 // array2.map() は、Array を返す
console.log( array2.map(e=>e).toString() ); // 1,2,3

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。