2023. 1. 9. 21:26ㆍjs
33.1 심벌이란.
자바스크립트에는 6개의 타입 즉 문자열, 숫자, 불리언, undefined, null, object 타입이 존재한다.
Symbol es6 에서 도입된 7번째 타입으로 변경 불가능한 원시 타입의 값이다.
따라서 위와 같은 로직을 이용해서 중복 결과들을 합치거나 하는데 사용 할 수 있다.
프로퍼티에서 살펴본 바와 같이 프로퍼티 키로 사용할 수 있는 값은
빈 문자열을 포함하는 모든 문자열 또는 심벌 값이다.
심벌 값의 생성.
Symbol 함수를 호출 하여 생성한다.
다른 타입의 경우 표기법을 통해서 생성 가능하지만 Symbol의 경우
함수를 통해서만 생성 가능하다. 다른값과 절대 중복되지 않는 유일무이 한 값 이다 .
33.2 Symbol for / symbol.keyFor 메서드
인수로 전달 받은 문자열을 키로 사용하여 쌍들이 저장되어 있는 전역 심벌레지스트리에
해당 키와 일치하는 값을 검색한다.
symbol.keyFor 심벌의 키값을 추출 할 수 있다.
33.3 심벌과 상수
const Direction = Object.freeze({
UP : Symbol(“up”),
DOWN : Symbol(“down”),
LEFT : Symbol(“left”),
RIGHT : Symbol(“right”),
});
와 같이 사용 할 수 있다. 위의 freeze 를 통해서 Direction을 고정하는 방식으로
enum을 흉내내서 사용 가능하다 .
33.4 심벌과 프로퍼티 키
객체의 프로퍼티 키는 문자열을 포함하는 모든 문자열 또는 심벌 값으로 만들 수 있다.
심벌값으로 동적 생성하여 키를 만들기 위해서 심벌안에 대괄호를 이용해서 사용 할 수 있다.
처음 정리했던 부분에서 사용 하는 것의 예시를 나타내는 로직이라고 볼 수 있다.
33.5 심벌과 프로퍼티 은닉
심벌값의 프로퍼티의 경우 for … in 이나 Object.key 와 같은 결과로 찾을 수 없다.
위에서 알려준 keyFor 과 같은것을 사용해야 한다.
따라서 노출할 필요가 없는 프로퍼티를 은닉 할 수 있다.
33.6 심벌과 표준 빌트인 객체 확장
일반적으로 메서드를 추가 하여 확장하는 것은 권장하지 않는다
읽기 전용으로 사용하라고 한다.
33.7 Well-known-symbol
자바스크립트가 기본 제공하는 심벌값을 위와 같이 부른다. symbol.iterator 를 호출 하면
이터레이터를 반환하도록 규정 되어 있고 빌트인 이터러블은 이터레이션 프로토콜을 준수 하며
구현은 위를 따라서 해결 하면 된다.
'js' 카테고리의 다른 글
35 스프레드 문법 (0) | 2023.01.15 |
---|---|
34 이터러블 (2) | 2023.01.15 |
regex (0) | 2022.12.26 |
js Date. 정리 part1 (0) | 2022.12.23 |
es6 함수의 추가기능. (0) | 2022.12.19 |