Symbol

  • 위와 같이 객체 property key가 boolean이나 숫자형이여도 문자형으로 반환된다.
  • 객체 property key는 문자형으로 가능하고 다른 형태로는 Symbol형이 있다.
  • 설명을 붙여주면 디버깅할 때 편하다.
  • 유일성이 보장된다.
const a = Symbol();
const b = Symbol();

console.log(a); // Symbol()
console.log(b); // Symbol()
console.log(a === b); // false
  • new를 붙이지 않는다.
  • 유일한 식별자를 만들 때 사용한다.
  • a와 b는 같은 Symbol() 의 값을 가지지만 일치, 동등연산자를 통해서 비교하면 false가 나온다.

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"}
console.log(Object.keys(user)); // [name: "Mike", age: 30]
const user2 = {
    name : 'DK',
    age : 30,
}

const id2 = Symbol('id2');
user2[id2]  = 'myid';

console.log(user2); // {name: 'DK', age: 30, Symbol(id2): 'myid'}

Object.keys, Object.values, Object.entries, for in 키가 심볼이면 등은 건너 뜀
어디에 사용할 수 있을까 - 원본 데이터는 건드리지 않고 속성을 추가할 수 있다.

댓글남기기