ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.