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/weakmap | |
| 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/weakmap')
7 files changed, 632 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html new file mode 100644 index 0000000000..5616cd0a70 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html @@ -0,0 +1,99 @@ +--- +title: WeakMap.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +tags: + - JavaScript + - Method + - Obsolete + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +--- +<div>{{JSRef}} {{obsolete_header}}</div> + +<p><code><strong>clear()</strong></code> メソッドは、<code>WeakMap</code> オブジェクトからすべての要素を削除するために使用されていましたが、もはや ECMAScript とその実装に含まれていません。</p> + +<h2 id="構文">構文</h2> + +<pre class="syntaxbox"><code><em>wm</em>.clear();</code></pre> + +<h2 id="例">例</h2> + +<h3 id="clear_メソッドを使う"><code>clear</code> メソッドを使う</h3> + +<pre class="brush: js;highlight:[10] example-bad">var wm = new WeakMap(); +var obj = {}; + +wm.set(obj, "foo"); +wm.set(window, "bar"); + +wm.has(obj); // true +wm.has(window); // true + +wm.clear(); + +wm.has(obj) // false +wm.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>{{CompatNo}} [1]</td> + <td>11</td> + <td>23</td> + <td>7.1</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>{{CompatNo}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] <code>clear()</code> メソッドは、バージョン 20 から 45 までサポートされていました。</p> + +<h2 id="関連情報">関連情報</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html new file mode 100644 index 0000000000..66f97e0a53 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -0,0 +1,72 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +<div>{{JSRef}}</div> + +<p><strong><code>delete()</code></strong> メソッドは、 {{jsxref("WeakMap")}} オブジェクトから指定された要素を削除します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakmap-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>wm</var>.delete(<var>key</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>key</var></code></dt> + <dd><code>WeakMap</code> オブジェクトから削除する要素のキーです。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code>WeakMap</code> オブジェクト内の要素を削除するのに成功した場合、<code>true</code> を返します。<code>WeakMap</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;highlight:[4] notranslate">var wm = new WeakMap(); +wm.set(window, 'foo'); + +wm.delete(window); // true を返す。削除に成功。 + +wm.has(window); // false を返す。 window はもう WeakMap に存在しない。 +</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-weakmap.prototype.delete', 'WeakMap.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.WeakMap.delete")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html new file mode 100644 index 0000000000..5292e8a053 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html @@ -0,0 +1,73 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/get +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +<div>{{JSRef}}</div> + +<p><strong><code>get()</code></strong> メソッドは、<code>WeakMap</code> オブジェクトから指定された要素を返します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.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>wm</var>.get(<var>key</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>key</var></code></dt> + <dd>必須。<code>WeakMap</code> オブジェクトから返す要素のキーです。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p>指定されたキーと関連した要素を返します。キーが <code>WeakMap</code> オブジェクトに見つからない場合、 {{jsxref("undefined")}} を返します。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_get_method" name="Using_the_get_method">get() メソッドの使用</h3> + +<pre class="brush: js notranslate">var wm = new WeakMap(); +wm.set(window, 'foo'); + +wm.get(window); // "foo" を返す +wm.get('baz'); // undefined を返す +</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-weakmap.prototype.get', 'WeakMap.prototype.get')}}</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.WeakMap.get")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.set()")}}</li> + <li>{{jsxref("WeakMap.has()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html new file mode 100644 index 0000000000..4f63c37dff --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html @@ -0,0 +1,76 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/has +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +<div>{{JSRef}}</div> + +<p><strong><code>has()</code></strong> メソッドは、特定のキーをもつ要素が <code>WeakMap</code> オブジェクト内に存在するかどうかを示す真偽値を返します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakmap-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>key</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>key</var></code></dt> + <dd><code>WeakMap</code> オブジェクトに存在するかテストする要素のキーです。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<dl> + <dt>Boolean</dt> + <dd><code>WeakMap</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 wm = new WeakMap(); +wm.set(window, 'foo'); + +wm.has(window); // true を返す +wm.has('baz'); // 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-weakmap.prototype.has', 'WeakMap.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.WeakMap.has")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.prototype.set()")}}</li> + <li>{{jsxref("WeakMap.prototype.get()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..72370dbf22 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,144 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Global_Objects/WeakMap +tags: + - Class + - ECMAScript 2015 + - JavaScript + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary"><strong><code>WeakMap</code></strong> オブジェクトは、キーが弱く参照されるキーと値の組のコレクションです。キーはオブジェクトでなければならず、値は任意の値を取ることができます。</span></p> + +<p><code>WeakMap</code> については、 <a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">WeakMap オブジェクト</a>のガイド (<a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">キー付きコレクション</a>内) でより詳しく解説しています。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>WeakMap のキーは <code>Object</code> に限ります。{{Glossary("Primitive", "プリミティブ型")}} はキーとして使えません(例えば {{jsxref("Symbol")}} は <code>WeakMap</code> のキーとして使えません)。</p> + +<h3 id="Why_WeakMap" name="Why_WeakMap">なぜ <em>Weak</em>Map なのか?</h3> + +<p>map API は、4 つの API メソッドから共有される 2 つの配列 (1 つはキー用、もう 1 つは値用) を用いることで、JavaScript で実装<em>できます</em>。このマップに要素を設定すると、それぞれの配列の最後に同時にキーと値を追加することになります。その結果、両方の配列でキーと値のインデックスは対応がとれています。マップから値を取得するには、すべてのキーを操作して一致するものを見つけ、見つかったキーのインデックスを使用して値の配列から対応する値を取り出します。</p> + +<p>そうした実装では、主に 2 つの不都合が生じることとなります。</p> + +<ol> + <li>第一に、設定や探索の計算量が <em>O(<var>n</var>)</em> となること (<var>n</var> はマップ中におけるキーの数) で、どちらの操作も一致する値を見つけるためにキーのリストを反復しなければならないからです。</li> + <li>第二の不都合は、配列が各キーと各値への参照を無期限に維持することを保証しているため、メモリリークが発生することです。これらの参照は、オブジェクトへの他の参照がない場合でも、キーがガベージコレクションされるのを防ぎます。これにより、対応する値がガベージコレクションされるのを防ぐことにもなります。</li> +</ol> + +<p>これに対して、ネイティブの <code>WeakMap</code> では、キーとなるオブジェクトに対しては"弱い"参照が保持されます。これにより、キーとなったオブジェクトへの参照が他に存在しない場合に、そのオブジェクトはガベージコレクションの対象に含まれるようになります。ネイティブの WeakMap はキーとそのキーに関する情報をマッピングする場合に、キーがガベージコレクションされていないときにだけ意味があるため特に有用な構造です。</p> + +<p><strong>弱い参照を用いるため、<code>WeakMap</code> のキーは列挙できません。</strong> キーの一覧を取得するメソッドは存在しません。もし、可能であれば、キーの一覧はガベージコレクションに依存することになり、非決定性が生まれます。キーの一覧が必要な場合は、{{jsxref("Map")}}を使うことになります。</p> + +<h2 id="Constructor" name="Constructor">コンストラクター</h2> + +<dl> + <dt>{{jsxref("WeakMap/WeakMap", "WeakMap()")}}</dt> + <dd>新しい <code>WeakMap</code> オブジェクトを生成します。</dd> +</dl> + +<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2> + +<dl> + <dt>{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(<var>key</var>)")}}</dt> + <dd><code><var>key</var></code> に関連した値を削除します。その後 <code>WeakMap.prototype.has(<var>key</var>)</code> は <code>false</code> を返します。</dd> + <dt>{{jsxref("WeakMap.get", "WeakMap.prototype.get(<var>key</var>)")}}</dt> + <dd><code><var>key</var></code> に関連した値を返します。見つからない場合、<code>undefined</code> を返します。</dd> + <dt>{{jsxref("WeakMap.has", "WeakMap.prototype.has(<var>key</var>)")}}</dt> + <dd><code>WeakMap</code> オブジェクト内に <code><var>key</var></code> に関連した値があるかどうか示す Boolean を返します。</dd> + <dt>{{jsxref("WeakMap.set", "WeakMap.prototype.set(<var>key</var>, <var>value</var>)")}}</dt> + <dd><code>WeakMap</code> オブジェクト内に <code><var>key</var></code> に対する値を設定し、<code>WeakMap</code> オブジェクトを返します。</dd> +</dl> + +<h2 id="Example" name="Example">例</h2> + +<h3 id="Using_WeakMap" name="Using_WeakMap">WeakMap の使用</h3> + +<pre class="brush: js notranslate">const wm1 = new WeakMap(), + wm2 = new WeakMap(), + wm3 = new WeakMap(); +const o1 = {}, + o2 = function() {}, + o3 = window; + +wm1.set(o1, 37); +wm1.set(o2, 'azerty'); +wm2.set(o1, o2); // 値は(オブジェクトまたは関数を含む)何であってもかまいません +wm2.set(o3, undefined); +wm2.set(wm1, wm2); // キーも値もどんなオブジェクトでもかまいません。 WeakMap であってもよいのです! + +wm1.get(o2); // "azerty" +wm2.get(o2); // wm2 には o2 に関連付けられた値が無い為、undefined が返ってきます +wm2.get(o3); // 値が undefined と関連付けられている為、undefined が返ってきます + +wm1.has(o2); // true +wm2.has(o2); // false +wm2.has(o3); // true (値が関連付けられているならば、たとえ値が 'undefined' であっても true となります) + +wm3.set(o1, 37); +wm3.get(o1); // 37 + +wm1.has(o1); // true +wm1.delete(o1); +wm1.has(o1); // false +</pre> + +<h3 id="Implementing_a_WeakMap-like_class_with_a_.clear_method" name="Implementing_a_WeakMap-like_class_with_a_.clear_method">.clear() メソッドを持つ WeakMap 風のクラスの実装</h3> + +<pre class="brush: js notranslate">class ClearableWeakMap { + constructor(init) { + this._wm = new WeakMap(init); + } + clear() { + this._wm = new WeakMap(); + } + delete(k) { + return this._wm.delete(k); + } + get(k) { + return this._wm.get(k); + } + has(k) { + return this._wm.has(k); + } + set(k, v) { + this._wm.set(k, v); + return this; + } +} +</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-weakmap-objects', 'WeakMap')}}</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.WeakMap")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object">JavaScript ガイド内の <code>WeakMap</code></a></li> + <li><a href="http://fitzgeraldnick.com/weblog/53/">Hiding Implementation Details with ECMAScript 6 WeakMaps</a></li> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html new file mode 100644 index 0000000000..2cd2dc35d8 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html @@ -0,0 +1,78 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/set +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +<div>{{JSRef}}</div> + +<p><strong><code>set()</code></strong> メソッドは、指定されたキーと値をもつ新しい要素を <code>WeakMap</code> オブジェクトへ追加します。</p> + +<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.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>wm</var>.set(<var>key</var>, <var>value</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>key</var></code></dt> + <dd>必須です。 <code>object</code> である必要があります。 <code>WeakMap</code> オブジェクトに追加する要素のキーです。</dd> + <dt><code><var>value</var></code></dt> + <dd>必須です。任意の値です。 <code>WeakMap</code> オブジェクトに追加する要素の値です。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code>WeakMap</code> オブジェクトです。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_the_set_method" name="Using_the_set_method">set() メソッドの使用</h3> + +<pre class="brush: js notranslate">var wm = new WeakMap(); +var obj = {}; + +// Add new elements to the WeakMap +wm.set(obj, 'foo').set(window, 'bar'); // chainable + +// Update an element in the WeakMap +wm.set(obj, 'baz'); +</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-weakmap.prototype.set', 'WeakMap.prototype.set')}}</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.WeakMap.set")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.prototype.get()")}}</li> + <li>{{jsxref("WeakMap.prototype.has()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html new file mode 100644 index 0000000000..cf1585cb9d --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html @@ -0,0 +1,90 @@ +--- +title: WeakMap() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap +tags: + - Constructor + - JavaScript + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap +--- +<div>{{JSRef}}</div> + +<p><strong><code>WeakMap()</code> コンストラクター</strong>は、キーが弱く参照されている、キーと値の組のコレクションである <code>WeakMap</code> オブジェクトを生成します。キーはオブジェクトでなければならず、値は任意の値を指定することができます。</p> + +<p><code>WeakMap</code> については、<a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">キー付きコレクション</a>の <a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object">WeakMap オブジェクト</a>の節を参照してください。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate">new WeakMap([<var>iterable</var>])</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>iterable</var></code></dt> + <dd>iterable は配列などの反復可能オブジェクトであり、その要素はキーと値の組 (2 要素の配列) となります。それぞれのキーと値の組は、新しい WeakMap に追加されます。 null は undefined として扱われます。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_WeakMap" name="Using_WeakMap">WeakMap の使用</h3> + +<pre class="brush: js notranslate">const wm1 = new WeakMap(), + wm2 = new WeakMap(), + wm3 = new WeakMap(); +const o1 = {}, + o2 = function() {}, + o3 = window; + +wm1.set(o1, 37); +wm1.set(o2, 'azerty'); +wm2.set(o1, o2); // 値は何でもよく、オブジェクトでも関数でもよい +wm2.set(o3, undefined); +wm2.set(wm1, wm2); // キーと値はあらゆるオブジェクトになれる。 WeakMap も同様。 + +wm1.get(o2); // "azerty" +wm2.get(o2); // undefined、 o2 というキーが wm2 にないため +wm2.get(o3); // undefined、 設定された値がそうであるため + +wm1.has(o2); // true +wm2.has(o2); // false +wm2.has(o3); // true (値自身が 'undefined' であっても) + +wm3.set(o1, 37); +wm3.get(o1); // 37 + +wm1.has(o1); // true +wm1.delete(o1); +wm1.has(o1); // 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-weakmap-constructor', 'WeakMap 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.WeakMap.WeakMap")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object"><code>WeakMap</code> (JavaScript ガイド)</a></li> + <li><a href="http://fitzgeraldnick.com/weblog/53/">Hiding Implementation Details with ECMAScript 6 WeakMaps</a></li> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> |
