廃止
この機能は廃止されました。まだいくつかのブラウザーで動作するかもしれませんが、いつ削除されてもおかしくないので、使わないようにしましょう。

handler.enumerate() メソッドは for...in ステートメントのトラップにするために使用されていましたが、 ES2016 で ECMAScript 標準から削除され、ブラウザーで非推奨になりました。

構文

var p = new Proxy(target, {
  enumerate(target) {
  }
});

引数

次の引数が enumerate メソッドに渡されます。 this はハンドラーにバインドされます。

target
対象オブジェクト。

返値

iterator オブジェクト。

解説

handler.enumerate メソッドはfor...in 文に対するトラップです。

横取り

このトラップは下記の操作を横取りできます。

不変条件

次の不変条件に違反している場合、 Proxy は TypeError をスローします。

  • enumerate メソッドはオブジェクトを返さなければなりません。

次のコードではfor...in 文をトラップします。

var p = new Proxy({}, {
  enumerate(target) {
    console.log('called');
    return ['a', 'b', 'c'][Symbol.iterator]();
  }
});

for (var x in p) { // "called"
  console.log(x);  // "a"
}                  // "b"
                   // "c"

次のコードでは不変条件に違反します。

var p = new Proxy({}, {
  enumerate(target) {
    return 1;
  }
});

for (var x in p) {} // TypeError is thrown

メモ: 両方の例ではメソッド定義の短縮構文を使用しています。

仕様策定状況

仕様書 策定状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
[[Enumerate]] の定義
標準 初回定義。 ECMAScript 2016 で削除。

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 なし なし37 — 47 なし なし なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 なし なし なし37 — 47 なし なし なし

関連項目

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

このページの貢献者: mfuji09, lv7777, shide55
最終更新者: mfuji09,