WebAssembly.Table.prototype.set()

WebAssembly.Table オブジェクトの set() プロトタイプメソッドは指定されたインデックスに格納されている参照を違う値に変更します。

構文

table.set(index, value);

引数

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

返値

なし。

例外

次の例では、2つ参照を持つ WebAssembly Table インスタンスを生成しています (table2.html ソースコード動作例 を確認してください) 。それから、長さが2で、関数参照が含まれないこと (null を返します) を確認するために、テーブルの長さと2つのインデックス (Table.prototype.get() を通して読み出して) のコンテンツを表示します。

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

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

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

最後に、fetchAndInstantiate() ユーティリティ関数を使用して wasm モジュール (table2.wasm) をロードしてインスタンス化します。テーブルの長さを表示して、いまテーブルに格納された(table2.wasm モジュール (テキスト表現 を参照) はテーブルに2つの関数参照を追加し、両方とも、簡単な数値を表示します)2つの関数参照を実行します:

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 インスタンス内で同じテーブルを参照して呼び出すこともできます。

仕様書

仕様書
WebAssembly JavaScript Interface
set() の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
setChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android 完全対応 43Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。

関連情報