자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Javascript] New Javascript 14장 - Symbol (심볼)

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