본문 바로가기
창고(2021년 이전)

[JS] Symbol : ES6 type

by 측면삼각근 2019. 11. 4.
728x90
반응형

MDN

poiemaweb

ES6 In Depth: 심볼 (Symbol)


JS는 6개의 타입을 가지고 있었다.

  • 원시타입(primitive data type)
    • Boolean
    • null
    • undefined
    • Number
    • String
  • 객체 타입(Object type
    • Object

심볼(symbol)은 ES6에서 7번째 타입으로 변경 불가능한 원시 타입 값이다.
Sumbol()로 반환되는 모든 심볼값은 고유하다.
심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키를 만들기 위해 사용한다.

console.log(Symbole('foo') === Symbole('foo'));
// false;

console.log(Symbol() === Symbol());
// false;

console.log(typeof Symbol());
//"symbol"

 

Symbol 값도 객체의 프로퍼티 키로 사용할 수 있다. Symbol 값은 유일한 값이므로 Symbol 값을 키로 갖는 프로퍼티는 다른 어떠한 프로퍼티와도 충돌하지 않는다.

const obj = {};

const mySymbol = Symbol('mySymbol');
obj[mySymbol] = 123;

console.log(obj); // { [Symbol(mySymbol)]: 123 }
console.log(obj[mySymbol]); // 123
반응형