[TIL] Symbol type
2754 단어 JavaScriptSymbolJavaScript
Symbol
- Primitive type
- 유일무이한 식별자를 만드는 데 사용된다.
사용방법
- Symbol()을 호출하면 심볼을 만들 수 있고, 설명(이름)은 선택적으로 추가할 수 있다.
- 심볼이 같더라도 값이 항상 다르다.
let sym = Symbol('id');
let sym2 = Symbol('id');
sym === sym2; // false
- 이름이 같을 때 값도 같길 원한다면 전역 레지스트리를 사용해야 한다.
- Symbol.for(key)는 key라는 이름을 가진 전역 심볼을 반환한다.
- 만약 key라는 전역 심볼이 없으면 새로운 전역 심볼을 만들어준다.
- key가 같다면 어디서 호출하든 상관없이 항상 같은 심볼을 반환한다.
let sym = Symbol.for('id');
let sym2 = Symbol.for('id');
sym === sym2; // true
Use cases
- 객체의 '숨김' 프로퍼티
- 외부 스크립트나 라이브러리에 속한 객체에 새로운 프로퍼티를 추가해 주고 싶다면 심볼을 만들고, 이를 프로퍼티 키로 사용하면 된다.
- key가 symbol이면 for...in의 대상이 되지 않아서 의도치 않은 프로퍼티 수정을 예방할 수 있다.
- 외부 스크립트나 라이브러리는 심볼 정보를 갖고 있지 않아서 프로퍼티 직접 접근도 불가하다.
- 자바스크립트 내부에서 사용되는 시스템 심볼은 Symbol.*로 접근할 수 있다.
- 이를 이용하면 내장 메서드 등의 기본 동작을 입맛대로 변경할 수 있다. iterable 객체에선 Symbol.iterator를, 객체를 원시형으로 변환하기에선 Symbol.toPrimitive 등을 사용할 수 있다.
- 사실 심볼을 완전히 숨길 방법은 없다. Object.getOwnPropertySymbols(obj)를 사용하면 모든 심볼을 볼 수 있고, 메서드 Reflect.ownKeys(obj)는 심볼형 키를 포함한 객체의 모든 키를 반환해준다.
Author And Source
이 문제에 관하여([TIL] Symbol type), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haji223/TIL-Symbol-type저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)