diff options
Diffstat (limited to 'files/ja/archive/web/javascript/handler.enumerate/index.html')
| -rw-r--r-- | files/ja/archive/web/javascript/handler.enumerate/index.html | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/files/ja/archive/web/javascript/handler.enumerate/index.html b/files/ja/archive/web/javascript/handler.enumerate/index.html new file mode 100644 index 0000000000..88c06a000e --- /dev/null +++ b/files/ja/archive/web/javascript/handler.enumerate/index.html @@ -0,0 +1,105 @@ +--- +title: handler.enumerate() +slug: Archive/Web/JavaScript/handler.enumerate +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Obsolete + - Proxy + - メソッド + - 廃止 +translation_of: Archive/Web/JavaScript/handler.enumerate +--- +<div>{{JSRef}} {{obsolete_header}}</div> + +<p><strong><code>handler.enumerate()</code></strong> メソッドは{{jsxref("Statements/for...in", "for...in")}} ステートメントにトラップを仕掛けるために使用されましたが、 ES2016 で ECMAScript 標準から削除され、ブラウザーで非推奨になりました。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="brush: js">var p = new Proxy(target, { + enumerate(target) { + } +}); +</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<p>次の引数が <code>enumerate</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p> + +<dl> + <dt><code>target</code></dt> + <dd>対象オブジェクト。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator</a> オブジェクト。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p><code><strong>handler.enumerate</strong></code> メソッドは{{jsxref("Statements/for...in", "for...in")}} 文に対するトラップです。</p> + +<h3 id="Interceptions" name="Interceptions">妨害</h3> + +<p>このトラップは下記の操作を妨害できます。:</p> + +<ul> + <li>Property enumeration / for...in: <code>for (var name in proxy) {...}</code></li> + <li>{{jsxref("Reflect.enumerate()")}}</li> +</ul> + +<h3 id="Invariants" name="Invariants">不変条件</h3> + +<p>次の不変条件に違反している場合、 proxy は {{jsxref("TypeError")}} をスローします。</p> + +<ul> + <li><code>enumerate</code> メソッドはオブジェクトを返さなければなりません。</li> +</ul> + +<h2 id="Examples" name="Examples">例</h2> + +<p>次のコードでは{{jsxref("Statements/for...in", "for...in")}} 文をトラップします。</p> + +<pre class="brush: js">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" +</pre> + +<p>次のコードでは不変条件に違反します。</p> + +<pre class="brush: js">var p = new Proxy({}, { + enumerate(target) { + return 1; + } +}); + +for (var x in p) {} // TypeError is thrown +</pre> + +<p>メモ: 両方の例では<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>の短縮構文を使用しています。</p> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<p><span class="pl-s">どの標準にも含まれていません。</span></p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<p>どこでも対応されていません。歴史的には Firefox 37 から 46 が対応していました。</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Statements/for...in", "for...in")}} ステートメント</li> + <li>{{jsxref("Reflect.enumerate()")}}</li> +</ul> |
