자바스크립트 Symbol, 숨겨진 강력함!

by DD
5개월 전
조회수 78

Symbol은 자바스크립트의 새로운 원시 타입으로, 고유한 식별자 역할을 수행함

객체 키로 사용 시 키 충돌을 방지하고, 내부 동작을 오버라이드 가능

전역 심볼 레지스트리를 통해 심볼을 공유하고, 내장 심볼로 언어 확장 가능

Symbol의 고유성과 충돌 방지

Symbol은 Symbol() 함수를 통해 생성되며, 매번 고유한 값을 반환한다. 구체적으로, 동일한 설명을 사용해도 서로 다른 Symbol이 생성되어 키 충돌을 완벽하게 방지한다. 따라서 라이브러리 개발 시 외부 코드와의 간섭 없이 안전한 식별자를 정의할 수 있다.

전역 심볼과 내장 심볼의 활용

전역 심볼 레지스트리는 Symbol 공유를 위한 메커니즘을 제공한다. Symbol.for()를 통해 동일한 키를 가진 심볼을 재사용하고, Symbol.keyFor()로 키를 역추적한다. 반면, 내장 심볼은 객체의 내부 동작을 오버라이드하여 언어 확장을 가능하게 한다. 따라서 Symbol.iterator를 구현하여 사용자 정의 객체의 동작을 제어할 수 있다.

Symbol의 활용: 숨겨진 프로퍼티와 언어 확장

Symbol은 for...in이나 Object.keys()에서 숨겨지는 프로퍼티를 생성한다. 구체적으로, Object.getOwnPropertySymbols()를 통해 접근 가능하지만, 은닉 목적보다는 내부 설정을 위한 보조 도구로 사용된다. 따라서 Symbol.toPrimitive를 활용하여 객체의 암묵적 형변환을 제어함으로써, 유연한 객체 동작을 구현할 수 있다.

자바스크립트에선 왜 심볼(Symbol)을 사용할까?