【JavaScript ECMAScript】Array::Array.prototype[Symbol.unscopables]インスタンスデータプロパティの使い方
Array.prototype[Symbol.unscopables]インスタンスデータプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Array.prototype[Symbol.unscopables]プロパティは、JavaScriptの配列インスタンスにおいて、withステートメントのスコープから特定のプロパティを除外するかどうかを定義するための特殊なオブジェクトを保持するプロパティです。
このプロパティは、Symbol.unscopablesというシンボルをキーとしてArray.prototypeに設定されています。その値はオブジェクトであり、キーとしてatやentriesといった一部の配列メソッド名を、値としてtrueを保持します。この設定により、withステートメント内でこれらのメソッド名が記述された場合でも、配列インスタンスのメソッドではなく、外側のスコープのプロパティが参照されます。
これは、withステートメントが導入された当初、既存のコードとの互換性を保ちつつ新しいメソッドを追加するために設けられた仕組みです。もしこの除外設定がなければ、withステートメント内でプロパティ名が衝突し、予期せぬ挙動を引き起こす可能性がありました。
現代のJavaScript開発では、withステートメント自体が非推奨であり、通常は使用されません。そのため、このArray.prototype[Symbol.unscopables]プロパティを開発者が直接操作する機会はほとんどありません。しかし、JavaScriptの内部的な動作や後方互換性に関する理解を深める上で、その存在を知っておくことは有益です。
構文(syntax)
1const unscopables = Array.prototype[Symbol.unscopables]; 2console.log(unscopables);
引数(parameters)
引数なし
引数はありません
戻り値(return)
Object
このプロパティは、Array.prototype の一部のプロパティが with 文のスコープから除外されることを示すオブジェクトを返します。このオブジェクトには、スコープから除外したいプロパティ名がキーとして格納されており、その値は常に true です。