Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Node.js24.x】Symbol::isConcatSpreadable定数の使い方

isConcatSpreadable定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Symbol.isConcatSpreadable定数は、JavaScriptのArray.prototype.concat()メソッドの挙動を制御するために使用される、組み込みのシンボル値を表す定数です。この定数は、concat()メソッドが引数として受け取ったオブジェクトを、連結対象の配列に展開(スプレッド)すべきかどうかを決定します。

具体的には、あるオブジェクトにSymbol.isConcatSpreadableプロパティが設定されている場合、そのプロパティの値によってconcat()メソッドの動作が変わります。このプロパティがtrueに設定されているオブジェクトは、あたかも配列であるかのようにその要素が展開され、連結先の配列に追加されます。一方、このプロパティがfalseに設定されているオブジェクトは、展開されずに、単一の要素としてそのまま連結先の配列に追加されます。

通常のconcat()メソッドの挙動では、引数が配列であればその要素が自動的に展開され、配列以外のオブジェクトであれば単一の要素として扱われます。Symbol.isConcatSpreadable定数を利用することで、開発者はこのデフォルトの挙動を上書きし、カスタムオブジェクトや特殊なデータ構造をconcat()メソッドで結合する際の振る舞いを細かく制御できます。これにより、オブジェクトが配列のように振る舞うべきか、あるいは単一の要素として扱われるべきかを明示的に指定できるため、より柔軟で意図通りの配列操作を実現できます。

構文(syntax)

1const myObject = {
2  0: 'element1',
3  1: 'element2',
4  length: 2,
5  [Symbol.isConcatSpreadable]: true
6};
7
8const newArray = ['start'].concat(myObject, ['end']);
9// newArray は ['start', 'element1', 'element2', 'end'] となる

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ