aboutsummaryrefslogtreecommitdiff
path: root/files/ja/archive/web/javascript/handler.enumerate/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ja/archive/web/javascript/handler.enumerate/index.html')
-rw-r--r--files/ja/archive/web/javascript/handler.enumerate/index.html105
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>