-
[JAVASCRIPT-모던자바스크립트] 심볼형5Javascript& React study 2021. 11. 13. 21:50728x90반응형SMALL
전역 심볼 레지스트리 안에 있는 심볼은 전역 심볼이라고 한다. 애플리케이션에서 광범위하게 사용해야 하는 심볼이라고 할 경우에는 전역 심볼을 사용하는 것이 좋다.
Roby랑 비슷하다?
Ruby 등의 몇몇 언어에서는 이름이 같을 경우 심볼도 같을 경우가 많다.
자바스크립트에서는 전역 심볼에서만 이런 특징이 적용된다고 볼 수 있다.Symbol.keyFor
전역 심볼을 찾을 때 사용되는 Symbol.for(key)에 반대되는 메서드도 있다. Symbol.keyFor(sym)를 사용하게 되면 이름을 얻을 수 있다.
// 이름을 이용해 심볼을 찾음 let Sym = Symbol.for('name'); let Sym = Symbol.for('id'); // 심볼을 이용해 이름을 얻음 alert( Symbol.keyFor(sym) ); // name alert( Symbol.keyFor(sym2) ); // id
Symbol.keyFor는 전역 심볼 레지스트리를 뒤져서 해당 심볼의 이름을 얻어낸다. 검색 범위가 전역 심볼 레지스트리이기 때문에 전역 심볼이 아닌 심볼에는 사용할 수 없다. 전역 심볼이 아닌 인자가 넘어오게 되면 Symbol.keyFor는 undefined를 반환한다.
전역 심볼이 아닌 모든 심볼은 description 프로퍼티가 있다. 일반 심볼에서는 이름을 얻고 싶으면 description 프로퍼티를 사용하면 된다.
let globalSymbol = Symbol.for('name'); let localSymbol = Symbol('name'); alert(Symbol.keyFor(globalSymbol)); // name, 전역심볼 alert(Symbol.keyFor(localSymbol)); // undefined, 전역심볼이 아님 alert( localSymbol.description ); // name
시스템 심볼
시스템 심볼(system symbol)은 자바스크립트 내부에서 사용되는 심볼이다. 시스템 심볼을 사용하게 되면 객체를 미세 조정할 수 있다.
명세서 내의 잘 알려진 심볼(well-known symbols)에서 어떤 시스템 심볼이 있는지 살펴보자
- Symbol.hasInstance
- Symbol.isConcatSpreadable
- Symbol.iterator
- Symbol.toPrimitive
- 기타 등등
객체가 어떻게 원시형으로 변환되는지 알기 위해선 Symbol.toPrimitive에 대해 알아야 하는데 자세한 내용은 다음시간에 알아보도록 하겠다.
728x90반응형LIST'Javascript& React study' 카테고리의 다른 글
모던 자바스크립트 Deep Dive # 1 (1) 2021.11.20 [JAVASCRIPT-모던자바스크립트] 객체를 원시형으로 변환하기 (2) 2021.11.14 [JAVASCRIPT-모던자바스크립트] 심볼형3 (2) 2021.11.07 [JAVASCRIPT-모던자바스크립트] 심볼형2 (2) 2021.11.06 [JAVASCRIPT-모던자바스크립트] 옵셔널 체이닝 '?.'3 / 심볼형 (7) 2021.10.31