[JS]構成部品(symbol)の役割は何ですか?


構成部品


ES 6は、「構成部品(symbol)」という元のデータ型を追加した.ユニークな識別子(唯一の識別子)を作成する場合は、構成部品を使用できます.Symbol()を使用して構成部品値を作成できます.
const person = Symbol('철수');
console.log(person);
// Symbol(철수)

構成部品の一意性


前述したように、構成部品は一意で一意であり、同じ値を持つ構成部品を作成するときに何が起こるかをコードで理解しましょう.
const me = Symbol('철수');
const clone = Symbol('철수');

console.log(me == clone);
// 출력 : false
構成部品の値は同じですが、各構成部品は一意であるため、同じ連語(==)に比べてfalseが返されることがわかります.

構成部品がオブジェクト属性の場合


コンポーネントを使用して、オブジェクトのプロパティに識別子を作成できます.
const people = {
	"철수" : "friend",
    "영미" : "friend",
    "철수" : "brother",
};

for (person in people) {
	console.log(person)
}
// 출력 : 철수
		 영미
peopleオブジェクトの名前と同じです.つまり、同じアトリビュートで重複しないように構成部品を使用することができます.
const people = {
	[Symbol("철수")] : "friend",
    [Symbol("영미")] : "friend",
    [Symbol("철수")] : "brother",
};

for (person in people) {
	console.log(person)
}
// 출력 : undefined
予想と異なり、出力は定義されていません.これは、素子がfor...inにないためである.リストできないため、構成部品を繰り返してはいけません.
したがって,オブジェクト属性配列を取得する方法がある.Object.getOwnPropertySymbols()
const people = {
	[Symbol("철수")] : "friend",
    [Symbol("영미")] : "friend",
    [Symbol("철수")] : "brother",
};

const symbols = Object.getOwnPropertySymbols(people);
console.log(symbols);
// 출력 : (3) [Symbol(철수), Symbol(영미), Symbol(철수)]
配列なのでmapを使って属性にアクセスできます.
const symbols = Object.getOwnPropertySymbols(people);
const value = symbols.map(symbol => people[symbol]);
console.log(value);
// 출력 : 
        (3) ['friend', 'friend', 'brother']
          0: "friend"
          1: "friend"
          2: "brother"
          length: 3