ホームページ > 記事 > ウェブフロントエンド > es6 シンボルは基本的なタイプですか?
es6 シンボルは基本タイプに属します。 Symbol は、es6 で導入された新しい基本データ型で、一意の値を表します。その機能は、属性名の競合を防ぎ、オブジェクト内の各属性名が一意であることを保証することです。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
Symbol
は基本的なデータ型であり、ES6 で導入された 新しい データ型です。
目的は、属性名の競合を防止するであり、オブジェクト内の各属性名が一意であることを確認することです。
let s1 = Symbol('foo'); let s2 = Symbol('foo'); s1 === s2 // false
シンボル タイプには、シンボル インスタンスの description を表す文字列パラメータを含めることができます。したがって、同じ説明を持つ Symbol タイプの 2 つのインスタンスは等しくありません。
let s = Symbol(); // 第一种写法 let a = {}; a[mySymbol] = 'Hello!'; // 第二种写法 let a = { [mySymbol]: 'Hello!' }; // 第三种写法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' }); // 以上写法都得到同样结果 a[mySymbol] // "Hello!"
シンボル タイプを属性名として使用する場合は、[]
を使用する必要があることがわかります。使用しない場合、変数名と同じ文字列が属性名として表されます。
#ただし、これはプライベート プロパティではありません。指定されたオブジェクトのすべての Symbol プロパティ名を取得できるシンボルは属性名として使用されます。オブジェクトをトラバースするとき、属性は
for...in
、for...of# には表示されません。 ## ループ。 、
Object.keys()、
Object.getOwnPropertyNames()、
JSON.stringify()## では返されません。
Object.getOwnPropertySymbols()メソッドがあります。このメソッドは、メンバーがすべて現在のオブジェクトのプロパティ名として使用される Symbol 値である配列を返します。
同じシンボル値を使用する方法
Symbol.for("bar") === Symbol.for("bar") // trueSymbol.for()
メソッドを使用すると、同じパラメータで作成された変数の値は同じになります。価値。このメソッドを使用して作成された Symbol 変数はパラメーターをグローバルに登録するためです。 Symbol()
で作成された変数のパラメータはグローバルには登録されません。 <pre class="brush:js;toolbar:false;">let s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"
let s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined</pre>
Use
グローバルに登録されたパラメータの名前は変数内にあります。 Symbol 組み込み属性値
: 他のオブジェクトが instanceof
演算子を使用する場合、それらは指定された内部メソッドを使用します。属性名で指定します。 #Symbol.isConcatSpreadable
Symbol.species
Symbol.match
Symbol.replace
Symbol.search
Symbol.split
Symbol .iterator
Symbol.toPrimitive
Symbol.toStringTag
Symbol.unscopables
【関連する推奨事項:
JavaScript ビデオ チュートリアル
Web フロントエンド ]
以上がes6 シンボルは基本的なタイプですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。