전역 Symbol 레지스트리
Symbol.for와 keyFor로 Symbol을 공유합니다.
전역 Symbol 레지스트리은(는) CoddyKit의 무료 JavaScript Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 JavaScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. JavaScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
공유 레지스트리
전역 심벌 레지스트리를 사용하면 항상 고유한 심벌을 만드는 대신 키를 기준으로 프로그램 전체에서 공유되는 심벌을 만들 수 있습니다.
const a = Symbol.for("app.id")
const b = Symbol.for("app.id")
console.log(a === b)Symbol.for
Symbol.for는 레지스트리에서 문자열 키로 심벌을 조회합니다. 해당 심벌이 있으면 반환하고, 없으면 새 심벌을 만들어 저장합니다.
const token = Symbol.for("token")
console.log(token.description)공유되는 동일성
일반적인 Symbol 호출과 달리 같은 키를 사용한 두 번의 Symbol.for 호출은 완전히 같은 심벌을 반환하므로 서로 같다고 비교됩니다.
const x = Symbol.for("shared")
const y = Symbol.for("shared")
console.log(x === y)Symbol과 비교하기
일반적인 Symbol은 항상 새롭고 고유한 심벌을 만들지만, Symbol.for는 같은 키에 대한 기존 레지스트리 항목을 재사용합니다.
const local1 = Symbol("k")
const local2 = Symbol("k")
const global1 = Symbol.for("k")
const global2 = Symbol.for("k")
console.log(local1 === local2)
console.log(global1 === global2)Symbol.keyFor
Symbol.keyFor는 그 반대 작업을 수행합니다. 레지스트리 심벌을 전달하면 해당 심벌을 만들 때 사용한 문자열 키를 반환합니다.
const s = Symbol.for("config")
console.log(Symbol.keyFor(s))keyFor와 로컬 심벌
레지스트리에 없는 심벌에 Symbol.keyFor를 사용하면 undefined가 반환됩니다. 이를 통해 심벌이 전역 심벌인지 확인할 수 있습니다.
const local = Symbol("private")
const global = Symbol.for("public")
console.log(Symbol.keyFor(local))
console.log(Symbol.keyFor(global))모듈 간 공유
레지스트리는 서로 다른 모듈처럼 애플리케이션의 여러 부분에서도 공유되므로, 서로 잘 알려진 조정 키를 사용해야 할 때 유용합니다.
function getKey() { return Symbol.for("event.bus") }
console.log(getKey() === Symbol.for("event.bus"))이름 지정 규칙
레지스트리는 전역이므로 다른 라이브러리와의 충돌을 피하려면 키에 접두사를 붙이십시오. 예를 들어 앱 이름을 네임스페이스로 사용할 수 있습니다.
const a = Symbol.for("myapp.user.id")
const b = Symbol.for("myapp.user.id")
console.log(a === b)레지스트리의 지속성
키가 한 번 등록되면 이후 해당 키를 사용하는 모든 Symbol.for 호출이 프로그램의 수명 동안 같은 심벌을 반환합니다.
Symbol.for("once")
const again = Symbol.for("once")
console.log(Symbol.keyFor(again))레지스트리를 사용할 때
서로 분리된 코드가 이름으로 같은 심벌에 동의해야 할 때 레지스트리를 사용하십시오. 고유성과 비공개성이 더 중요할 때는 일반적인 Symbol을 사용하십시오.
const sharedFlag = Symbol.for("feature.enabled")
const privateFlag = Symbol("feature.enabled")
console.log(sharedFlag === Symbol.for("feature.enabled"))
console.log(privateFlag === Symbol.for("feature.enabled"))객체 키와 함께 사용하기
레지스트리 심벌도 객체 키로 사용할 수 있으므로, 협력하는 모듈이라면 심벌을 다시 가져와 공유 메타데이터를 읽을 수 있습니다.
const META = Symbol.for("meta")
const obj = { [META]: "shared data" }
console.log(obj[Symbol.for("meta")])빠른 확인
레지스트리에 관한 지식을 확인해 보십시오.
복습
복습: 전역 레지스트리는 키를 기준으로 심벌을 공유합니다.
- Symbol.for는 레지스트리 심벌을 재사용하거나 생성합니다
- 같은 키는 같은 심벌을 반환합니다
- Symbol.keyFor는 키를 반환하고, 로컬 심벌에는 undefined를 반환합니다
- 충돌을 피하려면 키에 네임스페이스를 지정합니다
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))자주 묻는 질문
“전역 Symbol 레지스트리” 강의는 무료인가요?
네 — “전역 Symbol 레지스트리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 JavaScript Academy 강의 전체를 잠금 해제할 수 있습니다. JavaScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“전역 Symbol 레지스트리”에서 뭘 배우나요?
Symbol.for와 keyFor로 Symbol을 공유합니다. 브라우저에서 직접 실행하는 실습 코드로 JavaScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
JavaScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 JavaScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“전역 Symbol 레지스트리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 JavaScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 JavaScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 고유한 Symbol 만들기
- 객체 키로 사용하는 Symbol
- 전역 Symbol 레지스트리
- 잘 알려진 Symbol