MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

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つの関数参照を実行します:

fetchAndInstantiate('table2.wasm', importObject).then(function(instance) {
  console.log(tbl.length);
  console.log(tbl.get(0)());
  console.log(tbl.get(1)());
});

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

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

仕様

仕様 策定状況 コメント
Web Assembly JavaScript API
set() の定義
ドラフト 初回ドラフト定義。

ブラウザ実装状況

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート 57 15[2] 52 (52)[1] 未サポート 44 11
Feature Chrome for Android Android Webview Edge Mobile Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 57 57 未サポート 52.0 (52)[1] 未サポート 未サポート 11

[1] WebAssemblyはFirefox 52+で有効です。Firefox 52 Extended Support Release (ESR.)では無効化されています。

[2] 現在、“Experimental JavaScript Features” フラグを付けることでサポートされます。詳細については このブログ記事 を参照してください。

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: syu_kato
 最終更新者: syu_kato,