728x90

✅ 1. Symbol(심볼) 이란?
Symbol은 자바스크립트 ES6에 도입된 원시 타입(Primitive Type)중 하나로 고유하고 변경 불가능한 값입니다. 주로 객체의 키(Key)로 사용해 충돌을 방지할 때 활용됩니다.
const id = Symbol("id");
console.log(id); // Symbol(id)
console.log(typeof id); // symbol
✅ 2. Symbol 특징
- 고유성 보장: 같은 설명(description)을 줘도 하상 다른 값을 반환함
const a = Symbol("test");
const b = Symbol("test");
console.log(a === b); // false
- 문자열 변환 불가: 자동으로 문자열이 반환되지 않음
const sym = Symbol("hello");
console.log(sym.toString()); // Symbol(hello)
✅ 3. 객체 속성에서 활용
객체의 키로 Symbol을 사용해 충돌 없이 안전한 속성을 만들 수 있습니다.
// Symbol 오브젝트
const userId = Symbol("userId");
const user = {
name: "John Doe",
[userId]: "2130412", // 심볼을 키로 사용 가능
};
console.log(user.name); // John Doe
console.log(user[userId]); // 2130412
✅ 4. 심볼의 내장 심볼(Well-known Symbols)
자바스크립트는 여러 특수 동작을 정의하는 내장 심볼을 제공합니다.
// 심볼의 내장 심볼
const myObj = {
[Symbol.toStringTag]: "MyObject",
};
console.log(Object.prototype.toString.call(myObj)); // [object MyObject]
- Symbol.iterator: 반복 가능 객체 정의
- Symbol.toStringTag: 객체의 기본 문자열 태그 지정
- Symbol.hasInstance: instanceof 동작 정의
✅ 5. Symbol.for() 와 전역 심볼
const a = Symbol.for("shared");
const b = Symbol.for("shared");
console.log(a === b); // true
- Symbol() : 매번 새로운 심볼을 생성
- Symbol.for("key"): 전역 심볼 레지스트리에서 관리 -> 같은 키일 시 같은 심볼 반환
✅ 정리
- Symbol은 유일무이한 값으로 객체의 키 충돌 방지용으로 유용함
- 내장 심볼을 활용 시 JS의 내부 동작을 커스터마이징 가능
GitHub - javascript-only/newJSRoom: https://thinky.tistory.com/category/Front-End/JavaScript
https://thinky.tistory.com/category/Front-End/JavaScript - javascript-only/newJSRoom
github.com
728x90
LIST
'Front-End > JavaScript' 카테고리의 다른 글
| [Javascript] New Javascript 13장 - BigInt(큰 정수 처리) (0) | 2025.09.12 |
|---|---|
| [Javascript] New Javascript 12장 정적 메서드/필드 (0) | 2025.09.12 |
| [Javascript] New Javascript 11장 프라이빗 필드/메서드 (0) | 2025.09.10 |
| [Javascript] New Javascript 10장 모듈 시스템 (0) | 2025.09.08 |
| [Javascript] New Javascript 9장 클래스 문법 (0) | 2025.09.06 |