diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
| commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
| tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/javascript/reference/global_objects/weakset | |
| parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
| download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip | |
initial commit
Diffstat (limited to 'files/ja/web/javascript/reference/global_objects/weakset')
6 files changed, 529 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/add/index.html b/files/ja/web/javascript/reference/global_objects/weakset/add/index.html new file mode 100644 index 0000000000..c7a096b6d9 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/add/index.html @@ -0,0 +1,77 @@ +--- +title: WeakSet.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/add +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/add +--- +<div>{{JSRef}}</div> + +<p><strong><code>add()</code></strong> メソッドは、新しい要素を <code>WeakSet</code> オブジェクトの最後に追加します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-add.html", "taller")}}</div> + +<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><var>ws</var>.add(<var>value</var>);</pre> + +<h3 id="Syntax" name="Syntax">引数</h3> + +<dl> + <dt><code><var>value</var></code></dt> + <dd>必須。 <code>WeakSet</code> コレクションに追加する要素の値です。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code>WeakSet</code> オブジェクトです。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_add" name="Using_add">add() の使用</h3> + +<pre class="brush: js notranslate">var ws = new WeakSet(); + +ws.add(window); //window オブジェクトを WeakSet へ追加 + +ws.has(window); // true + +// WeakSet は引数としてオブジェクトのみを取ります。 +ws.add(1); +// 結果は "TypeError: Invalid value used in weak set" (Chrome) +// "TypeError: 1 is not a non-null object" (Firefox)</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.WeakSet.add")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.delete()")}}</li> + <li>{{jsxref("WeakSet.prototype.has()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html b/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html new file mode 100644 index 0000000000..071596ce79 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html @@ -0,0 +1,95 @@ +--- +title: WeakSet.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/clear +tags: + - JavaScript + - Method + - Obsolute + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/clear +--- +<div>{{JSRef("Global_Objects", "WeakSet")}} {{obsolete_header}}</div> + +<h2 id="Summary" name="Summary">概要</h2> + +<p><code>WeakSet</code>オブジェクトからすべての要素を削除します。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox"><code><em>ws</em>.clear();</code></pre> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">例: <code>clear</code> メソッドを使う</h3> + +<pre class="brush: js">var ws = new WeakSet(); + +ws.add(window); +ws.has(window); // true + +ws.clear(); + +ws.has(window); // false +</pre> + +<h2 id="仕様">仕様</h2> + +<p>すべての現在の標準やドラフトでサポートされていません。このメソッドは、リビジョン 28 (October 14, 2014のバージョン)までECMAScript第6版ドラフト仕様でサポートされました。しかし、最新バージョンのドラフトで削除されました。最終仕様では、サポートされていません。</p> + +<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>機能</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>基本サポート</td> + <td>36</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{CompatNo}}</td> + <td>23</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>機能</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>基本サポート</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="関連情報">関連情報</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.delete()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html b/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html new file mode 100644 index 0000000000..4be137c50d --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html @@ -0,0 +1,76 @@ +--- +title: WeakSet.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +--- +<div>{{JSRef}}</div> + +<p><strong><code>delete()</code></strong> メソッドは、<code>WeakSet</code> オブジェクトから指定された要素を取り除きます。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-delete.html")}}</div> + +<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><var>ws</var>.delete(<var>value</var>);</pre> + +<h3 id="Syntax" name="Syntax">引数</h3> + +<dl> + <dt><code><var>value</var></code></dt> + <dd>必須。 <code>WeakSet</code> オブジェクトから取り除くオブジェクトです。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code>WeakSet</code> オブジェクトの中の要素が正常に削除された場合は <code>true</code> を返します。 <code><var>value</var></code> が <code>WeakSet</code> の中で見つからなかったり、 <code><var>value</var></code> がオブジェクトではなかった場合は <code>false</code> を返します。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_delete_method" name="Using_the_delete_method">delete() メソッドの使用</h3> + +<pre class="brush: js notranslate">var ws = new WeakSet(); +var obj = {}; + +ws.add(window); + +ws.delete(obj); // false を返します。削除する obj が見つかりません。 +ws.delete(window); // true を返します。正常に削除されます。 + +ws.has(window); // false を返します。 window はもう WeakSet の中にないからです。 +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.WeakSet.delete")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.clear()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakset/has/index.html b/files/ja/web/javascript/reference/global_objects/weakset/has/index.html new file mode 100644 index 0000000000..b1ea0ffdb6 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/has/index.html @@ -0,0 +1,77 @@ +--- +title: WeakSet.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/has +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/has +--- +<div>{{JSRef}}</div> + +<p><strong><code>has()</code></strong> メソッドは、特定の値をもつ要素が <code>WeakSet</code> オブジェクト内に存在するかどうかを示す真偽値を返します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-has.html")}}</div> + +<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><var>ws</var>.has(<var>value</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>value</var></code></dt> + <dd><code>WeakSet</code> オブジェクトに存在するかテストする値です。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<dl> + <dt>Boolean</dt> + <dd><code>WeakSet</code> オブジェクト内に特定の値をもつ要素が存在していたら <code>true</code> を返します。さもなければ <code>false</code> を返します。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_has_method" name="Using_the_has_method">has() メソッドの使用</h3> + +<pre class="brush: js notranslate">var ws = new WeakSet(); +var obj = {}; +ws.add(window); + +mySet.has(window); // returns true +mySet.has(obj); // returns false +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.WeakSet.has")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.add()")}}</li> + <li>{{jsxref("WeakSet.prototype.delete()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakset/index.html b/files/ja/web/javascript/reference/global_objects/weakset/index.html new file mode 100644 index 0000000000..d8d9f87dfb --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/index.html @@ -0,0 +1,133 @@ +--- +title: WeakSet +slug: Web/JavaScript/Reference/Global_Objects/WeakSet +tags: + - Class + - ECMAScript 2015 + - JavaScript + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +<div>{{JSRef}}</div> + +<p><strong><code>WeakSet</code></strong> オブジェクトは、コレクションに弱く参照された<em>オブジェクト</em>を格納することができます。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p><code>WeakSet</code> オブジェクトはコレクションオブジェクトです。 {{jsxref("Set")}} と同様に、 <code>WeakSet</code> 内の各オブジェクトは一度だけ存在します。すなわち、 <code>WeakSet</code> コレクション内で固有になります。</p> + +<p>{{jsxref("Set")}} オブジェクトとの主な違いは下記の通りです。</p> + +<ul> + <li><code>WeakSet</code> は<strong>オブジェクトのみ</strong>のコレクションです。 {{jsxref("Set")}} のように、任意の型の自由な値を入れることはできません。</li> + <li><code>WeakSet</code> は<em>弱い参照</em>です。コレクション内のオブジェクトへの<em>弱い参照</em>で保持されます。 <code>WeakSet</code> 内に格納されているオブジェクトへの参照が他にない場合、ガベージコレクションにより削除されます。 + <div class="blockIndicator note"> + <p><strong>注:</strong> これは、このコレクションに格納されているオブジェクトの現在のリストが存在しないことを意味します。 <code>WeakSets</code> は列挙可能ではありません。</p> + </div> + </li> +</ul> + +<h3 id="Use_case_Detecting_circular_references" name="Use_case_Detecting_circular_references">使用例: 循環参照の検出</h3> + +<p>自分自身を再帰的に呼び出す関数は、どのオブジェクトが処理済みであるかを追跡することで、循環したデータ構造を防ぐ必要があります。</p> + +<p><code>WeakSet</code> はこの目的に理想的です。</p> + +<pre class="brush: js notranslate">// Execute a callback on everything stored inside an object +function execRecursively(fn, subject, _refs = null){ + if(!_refs) + _refs = new WeakSet(); + + // Avoid infinite recursion + if(_refs.has(subject)) + return; + + fn(subject); + if("object" === typeof subject){ + _refs.add(subject); + for(let key in subject) + execRecursively(fn, subject[key], _refs); + } +} + +const foo = { + foo: "Foo", + bar: { + bar: "Bar" + } +}; + +foo.bar.baz = foo; // Circular reference! +execRecursively(obj => console.log(obj), foo); +</pre> + +<p>ここで、 <code>WeakSet</code> は最初の実行時に作成され、その後の関数呼び出しのたびに (内部の <code>_refs</code> 引数を使用して) 渡されます。</p> + +<p>オブジェクトの数や探索順序は重要ではないので、オブジェクトの参照を追跡するには <code>WeakSet</code> のほうが {{jsxref("Set")}} よりも、特に巨大な数のオブジェクトを処理する場合にはよりふさわしい (そして性能もよい) ものです。</p> + +<h2 id="Constructor" name="Constructor">コンストラクター</h2> + +<dl> + <dt>{{jsxref("WeakSet/WeakSet", "WeakSet()")}}</dt> + <dd>新しい<code>WeakSet</code>オブジェクトを生成します。</dd> +</dl> + +<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2> + +<dl> + <dt>{{jsxref("WeakSet.add", "WeakSet.prototype.add(<var>value</var>)")}}</dt> + <dd><code><var>value</var></code> を <code>WeakSet</code> オブジェクトに追加します。</dd> + <dt>{{jsxref("WeakSet.delete", "WeakSet.prototype.delete(<var>value</var>)")}}</dt> + <dd><code><var>value</var></code> を <code>WeakSet</code> オブジェクトから削除します。削除後、 <code>WeakSet.prototype.has(<var>value</var>)</code> は <code>false</code> を返します。</dd> + <dt>{{jsxref("WeakSet.has", "WeakSet.prototype.has(<var>value</var>)")}}</dt> + <dd><code><var>value</var></code> が <code>WeakSet</code> オブジェクト内の要素に含まれているかどうかを示す論理値を返します。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_WeakSet_object" name="Using_the_WeakSet_object">WeakSet オブジェクトの使用</h3> + +<pre class="brush: js notranslate">const ws = new WeakSet(); +const foo = {}; +const bar = {}; + +ws.add(foo); +ws.add(bar); + +ws.has(foo); // true +ws.has(bar); // true + +ws.delete(foo); // foo を set から削除 +ws.has(foo); // false, foo は削除済み +ws.has(bar); // true, bar は残っている</pre> + +<p><code>foo !== bar</code> であることに注意してください。これらは似たオブジェクトですが、<em><strong>まったく同じオブジェクト</strong>ではありません</em>。したがって、両方のオブジェクトが set に追加されます。</p> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.WeakSet")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html b/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html new file mode 100644 index 0000000000..1876754199 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html @@ -0,0 +1,71 @@ +--- +title: WeakSet() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/WeakSet +tags: + - Constructor + - JavaScript + - Reference + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/WeakSet +--- +<div>{{JSRef}}</div> + +<p><strong><code>WeakSet</code></strong> コンストラクターで、 <code>WeakSet</code> オブジェクトを生成し、これに弱い参照で<em>オブジェクト</em>をコレクションで保持することができます。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate">new WeakSet([<var>iterable</var>]);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><var>iterable</var></dt> + <dd><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">反復可能オブジェクト</a>が渡された場合、すべての要素が新しい <code>WeakSet</code> に追加されます。 null は undefined として扱われます。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_WeakSet_object" name="Using_the_WeakSet_object">WeakSet オブジェクトの使用</h3> + +<pre class="brush: js notranslate">var ws = new WeakSet(); +var foo = {}; +var bar = {}; + +ws.add(foo); +ws.add(bar); + +ws.has(foo); // true +ws.has(bar); // true + +ws.delete(foo); // foo を set から削除 +ws.has(foo); // false, foo は削除済み +ws.has(bar); // true, bar は残っている</pre> + +<p><code>foo !== bar</code> であることに注意してください。これらは似たオブジェクトですが、<em><strong>まったく同じオブジェクト</strong>ではありません</em>。したがって、両方のオブジェクトが set に追加されます。</p> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset-constructor', 'WeakSet constructor')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.WeakSet.WeakSet")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> +</ul> |
