From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../reference/global_objects/symbol/for/index.html | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 files/ja/web/javascript/reference/global_objects/symbol/for/index.html (limited to 'files/ja/web/javascript/reference/global_objects/symbol/for') diff --git a/files/ja/web/javascript/reference/global_objects/symbol/for/index.html b/files/ja/web/javascript/reference/global_objects/symbol/for/index.html new file mode 100644 index 0000000000..2d7fff66d4 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/symbol/for/index.html @@ -0,0 +1,107 @@ +--- +title: Symbol.for() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/for +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for +--- +
{{JSRef}}
+ +

Symbol.for(key) メソッドは、引数で与えられたキーでランタイム全体のシンボルレジストリ内に存在しているシンボルを検索し、見つかった場合はそれを返します。さもなければ、新しいシンボルがこのキーでグローバルシンボルレジストリ内に生成されます。

+ +
{{EmbedInteractiveExample("pages/js/symbol-for.html")}}
+ + + +

構文

+ +
Symbol.for(key);
+ +

引数

+ +
+
key
+
必須の文字列です。シンボルに対するキー(シンボルの説明のためにも使用されます)。
+
+ +

返値

+ +

見つかった場合は指定したキーを持つ既存のシンボルです。さもなければ新しいシンボルを作成して返します。

+ +

解説

+ +

Symbol() と対照的に、Symbol.for() 関数はグローバルシンボルレジストリリスト内で利用可能なシンボルを生成します。Symbol.for() は必ずしもすべての呼び出しで新しいシンボルを生成するわけでなく、引数で与えられた key をもつシンボルがレジストリ内にすでに存在しているかどうか最初に調べます。存在している場合は、そのシンボルが返されます。引数で与えられたキーをもつシンボルが見つからない場合、Symbol.for() は新しいグローバルシンボルを生成します。

+ +

グローバルシンボルレジストリ

+ +

グローバルシンボルレジストリは次のレコード構造をもつリストで、値は空で初期化されます:

+ + + + + + + + + + + + + + + + + +
グローバルシンボルレジストリ内のレコード
フィールド名
[[key]]シンボルを識別するための文字列キー。
[[symbol]]グローバルに格納されているシンボル。
+ +

+ +

Symbol.for() の使用

+ +
Symbol.for('foo'); // create a new global symbol
+Symbol.for('foo'); // retrieve the already created symbol
+
+// Same global symbol, but not locally
+Symbol.for('bar') === Symbol.for('bar'); // true
+Symbol('bar') === Symbol('bar'); // false
+
+// The key is also used as the description
+var sym = Symbol.for('mario');
+sym.toString(); // "Symbol(mario)"
+
+ +

グローバルシンボルキーや他の (ライブラリコードの) グローバルシンボルとの名前の衝突を避けるために、シンボルの前に接頭辞をつけると良いかもしれません。

+ +
Symbol.for('mdn.foo');
+Symbol.for('mdn.bar');
+
+ +

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-symbol.for', 'Symbol.for')}}
+ +

ブラウザーの互換性

+ + + +

{{Compat("javascript.builtins.Symbol.for")}}

+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf