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():グローバル構成部品
素子は、名前が同じでも、違う存在です.
ただし、名前がグローバル変数と同じ場合は、同じオブジェクトを指す必要があります.
保証されるのは、
const id1 = Symbol.for("id");
const id2 = Symbol.for("id");
console.log(id1 === id2); // true
Symbol.keyFor(id1)//"id"Symbol.keyForを使用して変数を追加すると、構成部品の生成時に書かれた名前が表示されます.
Reference
この問題について(symbol), 我々は、より多くの情報をここで見つけました https://velog.io/@fizzy/symbolテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol