자바스크립트 Symbol이란?
Symbol이란 무엇인가?
자바스크립트는 기본 데이터 타입으로 boolean
, null
, undefined
, number
, string
, symbol
을 제공합니다. 그 중, symbol
은 유일하고 변경 불가능한 원시값입니다.
const mySymbol = Symbol('mySymbol');
console.log(typeof mySymbol); // symbol
위 코드에서 새로운 Symbol
을 만들 때, 인자로 전달된 mySymbol
은 심볼의 설명(description)입니다. 이 설명은 Symbol에 대한 디버깅 시 사용됩니다.
심볼의 유일성
심볼은 유일합니다. 동일한 설명으로 두 개의 Symbol을 만들면, 서로 다른 두 값을 갖습니다.
const symbolA = Symbol('mySymbol');
const symbolB = Symbol('mySymbol');
console.log(symbolA === symbolB); // false
그래서 확실하게 유일성을 보장해야 하는 경우, Symbol을 사용할 수 있습니다.
심볼의 활용
Symbol은 객체 리터럴 속성 이름으로 사용될 수 있습니다. 이 경우, 속성 이름이 유일한 값임을 보장합니다.
const myObj = {
[Symbol('mySymbol')]: 'Hello, World'
};
console.log(Object.getOwnPropertyNames(myObj)); // []
위 코드에서 Object.getOwnPropertyNames()
를 사용하면, 클래스 인스턴스처럼 리터럴 객체의 Symbol 속성에 대한 결과를 가져올 수 있습니다.
다음은 전역 심볼 레지스트리를 사용하여 전역 숌별자를 가져올 수 있는 예시입니다.
const mySymbol = Symbol.for('mySymbol');
console.log(mySymbol === Symbol.for('mySymbol')); // true
Symbol.for
는 주어진 Symbol이 레지스터리에 등록되어 있으면, 해당 Symbol을 반환하며, 아니면 등록 후 반환합니다.
결론
자바스크립트 Symbol은 고유하고 변경 불가능한 값입니다. 다중의 개체에서 속성 이름으로 사용할 때 유용합니다. 이를 활용하면 다양한 목적으로 사용됩니다.
자바스크립트 Symbol