-
33_Symbol모던 자바스크립트 딥 다이브 독학 2023. 11. 30. 17:20
이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용
심벌 값 생성
Symbol 함수 (new 연산자 X)
const mySymbol = Symbol(); const mySymbol2 = Symbol('설명'); //심벌 값에 대한 설명으로 심벌 값 생성에 //어떠한 영향도 주지 않는다.
심벌 값은 문자열이나 숫자 타입으로 변환 X
불리언 타입으로는 암묵적으로 타입 변환 O
Symbol.for / Symbol.keyFor 메서드
- 검색에 성공하면 새로운 심벌 값을 생성하지 않고 검색된 심벌 값을 반환
- 검색에 실패하면 새로운 심벌 값을 생성하여 Symbol.for 메서드의 인수로 전달된 키로 전역 심벌 레지스트리에 저장한 후, 생성된 심벌 값을 반환
심벌, 프로퍼티 키
객체의 프로퍼티 키는 빈 문자열을 포함하는 모든 문자열 또는 심벌 값으로 만들 수 있으며, 동적으로 생성도 가능하다.
심벌 값을 프로퍼티 키로 사용하려면 프로퍼티 키로 사용할 심벌 값에 대괄호를 사용해야 한다.
const obj = { [Symbol.for('mySymbol')]: 1 }; obj[Symbol.for('mySymbol')]; // 1
심벌 값으로 프로퍼티 키를 만들면 다른 프로퍼티 키와 절대 충돌하지 않는다.
심벌과 프로퍼티 은닉
- 외부에 노출할 필요가 없는 프로퍼티를 은닉할 수 있다.
- Object.getOwnPropertySymbols 메서드를 사용하면 찾을 수 있다.(ES6)
심벌과 표준 빌트인 객체 확장
- 심벌 값으로 프로퍼티 키를 생성하여 표준 빌트인 객체를 확장
Well-known Symbol
- 자바스크립트가 기본 제공하는 빌트인 심벌 값을 ECMAScript 사양에서는 Well-known-Symbol이라 부른다. 자바스크립트 엔진의 내부 알고리즘에 사용된다.
- 심벌은 중복되지 않는 상수 값을 생성하는 것은 물론 기존에 작성된 코드에 영향을 주지 않고 새로운 프로퍼티를 추가하기 위해, 즉 하위 호환성을 보장하기 위해 도입되었다.
'모던 자바스크립트 딥 다이브 독학' 카테고리의 다른 글
35_Spread Syntax (0) 2023.12.07 34_Iterable (2) 2023.12.03 32_String (0) 2023.11.23 31_RegExp (0) 2023.11.22 30_Date (2) 2023.11.21