WebAssembly.Table.prototype.set()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.

set()WebAssembly.Table オブジェクトのプロトタイプメソッドで、指定された位置に格納されている参照を別な値に変更します。

構文

js
set(index, value);

引数

index

変更する関数参照の位置。

value

変更する参照。これはエクスポートされた WebAssembly 関数、 wasm 関数を内在する JavaScript ラッパーである必要があります。

返値

なし。

例外

Table.set の使用

次の例 (table2.html のソースコード動作例を確認してください) では、初期サイズが参照 2 つである WebAssembly Table インスタンスを生成しています。そして、テーブルの長さと 2 つの位置の内容 (Table.prototype.get() で取得) を出力して、長さが 2 であること、それぞれの位置には現在、関数の参照が含まれていないこと (現在は null を返すこと) を示しています。

js
var tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));

次に、テーブルの参照を含むインポートオブジェクトを作成します。

js
var importObj = {
  js: {
    tbl: tbl,
  },
};

最後に、 wasm モジュール (table2.wasm) を WebAssembly.instantiateStreaming() を使用して読み込みインスタンス化します。テーブルの長さを記録し、テーブルに格納された 2 つの関数参照を呼び出します (table2.wasm モジュール (テキスト表現) がテーブルに 2 つの関数の参照を追加し、どちらも単純な表示を表示します)。

js
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
  function (obj) {
    console.log(tbl.length);
    console.log(tbl.get(0)());
    console.log(tbl.get(1)());
  },
);

内部の値を表示するためには、参照された関数のアクセサーの呼び出しの後に、 2 つ目の関数呼び出しを含める必要があることに注意して下さい (get(0) ではなく get(0)())。

この例では、JavaScript からテーブルを作成してアクセスしていますが、wasm インスタンス内で同じテーブルを参照して呼び出すこともできます。

仕様書

Specification
WebAssembly JavaScript Interface
# dom-table-set

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
set

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報