JaveScript
JaveScript_TLI-3_[Symbol의 기본 개념]
SanL
2023. 5. 13. 00:25
JavaScript
Symbol : 유일한 식별자
const a = Symbol(); // new를 붙이지 않음
const b = Symbol();
console.log(a) // Symbol()
console.log(b) // Symbol()
// a===b(false) , a==b(false)
Symbol은 어디에 쓰는가?
:특정 객체의 원래 데이터는 건들이지 않고, 속성을 추가할때 사용한다!
Property key Symbol
const id = Symbol('Id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
console.log(user); // {name : 'Mike', age : 30, Symbol[id] : 'myid'}
Object.keys(user) ; // ["name","age"]
Object.values(user) ; // ["Mike","30"]
Object.entries(user) ; // ["Array(2)","Array(2)"]
// Symbol형을 모드 건너뛰고 출력
- Symbol() 형으로 생성된 Symbol은 키를 찾을 수 없고, Symbol.for() 함수만 Symbol.ketfor()를 통해 키를 찾을 수 있다.
!Symbol.for()
- 하나의 심볼만 보장 받을 수 있음 , 없으면 만들고, 있으면 가져온다.
- Symbol 함수는 매번 다른 Symbol 값을 생성하지만, Symbol.for() 매소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유한다.
const id1 = Symbol.for('Id');
const id2 = Symbol.for('Id');
id1 === id2 ; // true
//for가 없을때는 false! 다른 Symbol로 본다.
Symbol.keyfor(Id1); // "Id" 생성할때 적어 놓았던 이름을 알려줌
숨겨진 Symbol key 보는법
Object.getOwnPropertySymbols(user);
Reflect.ownKeys() // Symbol형을 포함한 모든키를 보여줌