symbol

6687 ワード

symbol


ユニークな識別子を作成します.newを入れない.
const a = Symbol(); // new를 붙이지 않는다.
const b = Symbol();

console.log(a === b); //false
console.log(a == b); //false


//프로퍼티 key : 문자형
const obj = {
  1: "is 1",
  false: "거짓",
};

console.log(Object.keys(obj)); //['1', 'false']

console.log(obj["false"]); //거짓, 문자열로 접근 가능
console.log(obj[false]); //거짓


//프로퍼티 key : 심볼형
const id = Symbol("id");
const user = {
  name: "tom",
  age: 30,
  [id]: "my id",
};
console.log(user); //{name: 'tom', age: 30, Symbol(id): 'my id'}
console.log(user[id]); //my id 

console.log(Object.keys(user)); // ['name', 'age'] , 키가 심볼형인 프로퍼티는 건너뛴다. 
// 특정 객체의 원본데이터는 건들이지 않고 속성을 추가할 수 있다. 
構成部品に一意性が保証されています.
コンポーネントをオブジェクトのキーとして使用すると、キーは非表示になります.一部のオブジェクトの元のデータは、操作を必要とせずに属性を追加できます.

symbol.for():グローバル構成部品


素子は、名前が同じでも、違う存在です.
ただし、名前がグローバル変数と同じ場合は、同じオブジェクトを指す必要があります.
保証されるのは、
  • 個の構成部品のみです.
  • なしで作っているので、あれば持ってきてください.
  • シンボル関数は、毎回異なるシンボル値を生成するが、
  • symbol.forメソッドが生成されると,キーによって同じシンボルが共有される.
  • 
    const id1 = Symbol.for("id");
    const id2 = Symbol.for("id");
    
    console.log(id1 === id2); // true
    Symbol.keyFor(id1)//"id"
    Symbol.keyForを使用して変数を追加すると、構成部品の生成時に書かれた名前が表示されます.