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

仕様

仕様 策定状況 コメント
WebAssembly JavaScript Interface
set() の定義
草案 初回ドラフト定義。

ブラウザ実装状況

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!
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” フラグを付けることでサポートされます。詳細については このブログ記事 を参照してください。

関連情報

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

このページの貢献者: mdnwebdocs-bot, ukyo
最終更新者: mdnwebdocs-bot,