get SharedArrayBuffer[@@species]
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.
SharedArrayBuffer[@@species]
アクセサープロパティは、SharedArrayBuffer
の各メソッドから返される値を作成するために使用されるコンストラクター(種)を返します。
警告: @@species
が存在すると、任意のコードの実行が可能になり、セキュリティ上の脆弱性が生じる可能性があります。また、ある種の最適化も非常に難しくなります。エンジンの実装者たちは、この機能を削除するかどうか調査しています。可能であれば、この機能に頼ることは避けてください。
構文
SharedArrayBuffer[Symbol.species]
返値
get @@species
が呼び出されたコンストラクター (this
) の値です。この返値は、新しい配列バッファーを作成するための配列バッファーのメソッドから返される値を構成するために使用されます。
解説
@@species
アクセサープロパティは SharedArrayBuffer
オブジェクトの既定のコンストラクターを返します。サブクラスのコンストラクターはこれを上書きして、コンストラクターの割り当てを変更することができます。既定の実装では、基本的に次のようになります。
// 説明のための仮想的な基礎実装
class SharedArrayBuffer {
static get [Symbol.species]() {
return this;
}
}
この多態的な実装のため、派生したサブクラスの @@species
も既定でコンストラクター自身を返すことになります。
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SharedArrayBuffer; // true
既存の配列を変更せず、新しい配列バッファーのインスタンスを返す配列バッファーのメソッド(例えば slice()
)を呼び出すと、その配列の constructor[@@species]
にアクセスすることになります。返されたコンストラクターは配列バッファーメソッドの返値を構築するために使用されます。
例
通常のオブジェクトにおける種
@@species
プロパティは、既定のコンストラクター関数、つまり SharedArrayBuffer
であれば SharedArrayBuffer
コンストラクターが返されます。
SharedArrayBuffer[Symbol.species]; // function SharedArrayBuffer()
派生オブジェクトにおける種
独自の SharedArrayBuffer
サブクラスのインスタンス、例えば MySharedArrayBuffer
では、その MySharedArrayBuffer
の種は MySharedArrayBuffer
コンストラクターになります。しかし、派生クラスのメソッドで親の SharedArrayBuffer
オブジェクトを返すために、これを上書きしたいと思うかもしれません。
class MySharedArrayBuffer extends SharedArrayBuffer {
// 種を MySharedArrayBuffer から親である SharedArrayBuffer コンストラクターで上書きする。
static get [Symbol.species]() {
return SharedArrayBuffer;
}
}
仕様書
Specification |
---|
ECMAScript Language Specification # sec-sharedarraybuffer-%symbol.species% |
ブラウザーの互換性
BCD tables only load in the browser