[JavaScript] 6. 심볼(Symbol)

Zero·2023년 2월 12일
0

JavaScript

목록 보기
6/35

property key : 문자형

const obj = {
 	1 : '1입니다.',
  	false : '거짓',
}

Object.keys(obj); // ["1", "false"]

obj['1'] // "1 입니다."
obj['false'] // "거짓"

Symbol

Symbol 은 유일한 식별자를 만들 때 사용한다. (유일성 보장)

const a = Symbol(); // new 를 붙이지 않는다.
const b = Symbol();
  • Symbol 을 객체의 property key로 사용할 수 있다.
const id = Symbol('id');
const user = {
	name : 'Mike',
  	age : 30,
  	[id] : 'myid',
}

--> 출력 해보면
{name : "Mike" , age: 30 , Symbol(id) : "myid"} 

그러나 이전에 배운 여러 객체 메소드들은 심볼형을 건너뛴다.

Object.keys(user); // ["name", "age"] 만 출력됨.
Object.values(user); // ["Mike", 30] 

Symbol.for() : 전역 심볼

  • 하나의 심볼만 보장받을 수 있음
  • 없으면 만들고, 있으면 가져오기 때문
  • Symbol 함수는 매번 다른 Symbol 값을 생성하지만 ,
  • Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유한다.
const id1 = Symbol.for('id');
const id2 = Symbol.for('id');

id1 === id2;  // true
  • Symbol.keyFor(id1) 하면 Symbol.for 생성시 사용한 '문자열' 알려줌
  • Symbol로만 생성하면 id1.description을 통해 확인 가능

숨겨진 Symbol key 보는 법

  • Object.getOwnPropertySymbols(user); // 심볼들만 보여줌
  • Reflect.ownKeys(user); // symbol 포함 모든 키를 보여줌

그래서 심볼을 언제 사용해야 하는데 ?

유일한 프로퍼티를 추가하고 싶을 때 Symbol을 사용해라 !

0개의 댓글