1 minute read

심볼형

JS 는 객체 프로퍼티 키로 오직 문자형과 심볼만 허용

  • 심볼

    유일한 식별자 만들고 싶을 때 사용

    Symbol() 사용하여 만듦

    심볼 이름 이라는 설명 붙이기 가능

    유일성이 보장되는 자료라 설명 동일한 심볼 여러개 만들어도 각 심볼값 다름

  • 심볼은 문자형으로 자동형 변환 안 됨

    문자열과 심볼은 근본이 달라 서로 타입 변환되면 안 됨

    반드시 문자열 출력해야 할 시 to.String() 메서드 명시적으로 호출

    symbol.description 프로퍼티 사용으로 설명만 보여주기 가능

  • ‘숨김’ 프로퍼티

    심볼로 ‘숨김’ 프로퍼티 만들기 가능

    외부 코드에서 접근 불가능하고 값도 덮어쓰기 불가능

    외부 코드에 심볼 사용하여 외부 코드에서 모르게 프로퍼티 부여 가능

    유일성이 보장되므로 외부에서의 충돌 없음

  • Symbols in a literal

    객체 리터럴 사용해 객체 만들었을 시 대괄호 사용하여 심볼형키 만듦

  • 심볼은 for…in 에서 배제

    for…in 에서 심볼 접근 부락능

    Object.key() 에서도 접근 불가능

    외부 스크립트나 라이브러리에서 심볼 접근 불가능

    Object.assign 은 제외

  • 전역 심볼

    이름이 같은 심볼이 같은 개체 가리키길 원하는 경우 사용

    전역 심볼 레지스트리 사용하여 안에 전역 심볼 만들고 해당 심볼에 접근 시 이름이 같은 경우 항상 동일한 심볼 반환

    Symbol.for(key) 사용시 이름이 key 있을 시 해당 심볼 반환, 없을 시 해당 이름의 전역 심볼 생성

  • Symbol.keyFor

    해당 심볼 이름 얻을 때 사용

    전역 심볼 레지스트리 뒤져서 해당 이름 얻어냄

    전역 심볼 아닐 시 사용 불가능

    전역 심볼 아닌 모든 심볼은 이름 얻을 수 있는 description 프로퍼티 존재

  • 시스템 심볼

    JS 내부에서 사용되는 심볼

    객체 미세 조정 가능

요약

  • Symbol 은 객체의 유일한 식별자 만들고 싶을 때 사용

  • Symbol() 사용해서 만들며 인자에 심볼 이름(설명) 넣을 수 있음

  • 유일성 보장되는 자료

  • 문자형 자동 변환 안 됨

  • 심볼 출력 필요할 시 .toString() 메서드 호출

  • symbol.description 프로퍼티로 설명만 보여줄 수 있음

  • ‘숨김’ 프로퍼티로 만들기 가능

  • 객체 리터럴 사용해 객체 만들 시 대괄호([]) 사용하여 심볼형 키 만듬

  • 심볼은 for…in, Object.key() 에서 배제

  • Object.assign 은 키가 심볼인 프로퍼티 배제 하지 않으므로 접근 가능

  • 전역 심볼 레지스트리 이용하여 전역 심볼 생성

  • Symbor.for(key)로 전역 심볼 만들거나 조회가능하며 이름이 key인 심볼 반환

  • Symbo.keyFor(sym) 로 전역 심볼 레지스트리 뒤져서 해당 sym(symbol) 이름 얻음 (전역 심볼 아닐 시 undefined 반환)

  • 시스템 심볼로 JS 내부 객체 미세 조정 가능

Categories: ,

Updated: