JavaScript/SharedArrayBuffer/prototype

カテゴリ:Book:JavaScript#SharedArrayBuffer/prototype%20

SharedArrayBuffer.prototype は、すべての SharedArrayBuffer インスタンスに継承されるプロパティとメソッドを提供するオブジェクトです。このプロトタイプオブジェクトにより、すべての SharedArrayBuffer インスタンスが共通の機能を持つことができます[1]

説明

SharedArrayBuffer.prototype オブジェクトは、Object.prototype を継承しています。このプロトタイプオブジェクトを通じて、すべての SharedArrayBuffer インスタンスが共通のプロパティとメソッドにアクセスできます。

プロパティ

SharedArrayBuffer.prototype [ Symbol.toStringTag ]
"SharedArrayBuffer" という文字列を返します。これは Object.prototype.toString メソッドで使用されます。

アクセサ

get SharedArrayBuffer.prototype.byteLength
バッファのバイト単位のサイズを返します(ゲッター)。
get SharedArrayBuffer.prototype.growable
バッファがサイズ変更可能かどうかを示すブール値を返します(ゲッター)。
get SharedArrayBuffer.prototype.maxByteLength
バッファの最大バイト長を返します(ゲッター)。

メソッド

SharedArrayBuffer.prototype.constructor
SharedArrayBuffer コンストラクタ関数を参照します。
SharedArrayBuffer.prototype.grow(newLength)
成長可能なバッファのサイズを新しい長さに変更します。
SharedArrayBuffer.prototype.slice(start, end)
指定した範囲の新しい SharedArrayBuffer を作成します。

プロトタイプのプロパティへのアクセス

以下のプログラムは、SharedArrayBuffer.prototype のプロパティにアクセスする例を示しています。

const buffer = new SharedArrayBuffer(16);

// プロトタイプチェーンの確認
console.log(Object.getPrototypeOf(buffer) === SharedArrayBuffer.prototype); // true
console.log(Object.getPrototypeOf(SharedArrayBuffer.prototype) === Object.prototype); // true

// @@toStringTagの使用
console.log(Object.prototype.toString.call(buffer)); // [object SharedArrayBuffer]

このプログラムでは、SharedArrayBuffer インスタンスのプロトタイプチェーンを確認し、@@toStringTag シンボルの使用例を示しています。

sliceメソッドの使用

以下のプログラムは、SharedArrayBuffer.prototype.slice メソッドを使用して新しいバッファを作成する例を示しています。

const buffer = new SharedArrayBuffer(8);
const view = new Uint8Array(buffer);

// バッファに値を設定
for (let i = 0; i < 8; i++) {
  view[i] = i;
}

// インデックス2から5までの範囲を切り出して新しいバッファを作成
const newBuffer = buffer.slice(2, 6);
const newView = new Uint8Array(newBuffer);

console.log(newBuffer.byteLength); // 4
console.log([...newView]); // [2, 3, 4, 5]

このプログラムでは、元のバッファに値を設定し、slice メソッドを使用して一部の範囲を新しいバッファとして切り出しています。新しいバッファには元のバッファの値がコピーされます。

成長可能なバッファとプロトタイププロパティ

以下のプログラムは、成長可能な SharedArrayBuffer を作成し、プロトタイプのプロパティを使用する例を示しています。

const buffer = new SharedArrayBuffer(4, { maxByteLength: 8 });

// プロトタイププロパティを使用
console.log(buffer.byteLength); // 4
console.log(buffer.growable); // true
console.log(buffer.maxByteLength); // 8

// growメソッドを使用してバッファを拡張
buffer.grow(6);
console.log(buffer.byteLength); // 6

このプログラムでは、成長可能な SharedArrayBuffer を作成し、byteLengthgrowablemaxByteLength プロパティにアクセスしています。また、grow メソッドを使用してバッファサイズを拡張しています。

注意点

  • 不変性: SharedArrayBuffer.prototype オブジェクト自体を変更すべきではありません。変更すると、すべての SharedArrayBuffer インスタンスの動作に影響します。
  • 拡張: カスタムメソッドを追加する場合は、SharedArrayBuffer.prototype を直接変更するのではなく、個々のインスタンスにメソッドを追加することが推奨されます。
  • プロパティ属性: SharedArrayBuffer.prototype のプロパティは、Object.defineProperty を使用して定義されており、特定の属性(writable、enumerable、configurable)を持っています。

脚註

  1. これは、すべての SharedArrayBuffer インスタンスが共有する機能を定義します。

外部リンク

カテゴリ:Book:JavaScript#SharedArrayBuffer/prototype%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension