ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVASCRIPT-모던자바스크립트] 심볼형5
    Javascript& React study 2021. 11. 13. 21:50
    728x90
    반응형
    SMALL

    전역 심볼 레지스트리 안에 있는 심볼은 전역 심볼이라고 한다. 애플리케이션에서 광범위하게 사용해야 하는 심볼이라고 할 경우에는 전역 심볼을 사용하는 것이 좋다.

    Roby랑 비슷하다?

    Ruby 등의 몇몇 언어에서는 이름이 같을 경우 심볼도 같을 경우가 많다.
    자바스크립트에서는 전역 심볼에서만 이런 특징이 적용된다고 볼 수 있다.

    Symbol.keyFor

    전역 심볼을 찾을 때 사용되는 Symbol.for(key)에 반대되는 메서드도 있다. Symbol.keyFor(sym)를 사용하게 되면 이름을 얻을 수 있다.

    // 이름을 이용해 심볼을 찾음
    let Sym = Symbol.for('name');
    let Sym = Symbol.for('id');
    
    // 심볼을 이용해 이름을 얻음
    alert( Symbol.keyFor(sym) ); // name
    alert( Symbol.keyFor(sym2) ); // id

    Symbol.keyFor는 전역 심볼 레지스트리를 뒤져서 해당 심볼의 이름을 얻어낸다. 검색 범위가 전역 심볼 레지스트리이기 때문에 전역 심볼이 아닌 심볼에는 사용할 수 없다. 전역 심볼이 아닌 인자가 넘어오게 되면 Symbol.keyFor는 undefined를 반환한다.

    전역 심볼이 아닌 모든 심볼은 description 프로퍼티가 있다. 일반 심볼에서는 이름을 얻고 싶으면 description 프로퍼티를 사용하면 된다.

    let globalSymbol = Symbol.for('name');
    let localSymbol = Symbol('name');
    
    alert(Symbol.keyFor(globalSymbol)); // name, 전역심볼
    alert(Symbol.keyFor(localSymbol)); // undefined, 전역심볼이 아님
    
    alert( localSymbol.description ); // name

    시스템 심볼

    시스템 심볼(system symbol)은 자바스크립트 내부에서 사용되는 심볼이다. 시스템 심볼을 사용하게 되면 객체를 미세 조정할 수 있다. 

    명세서 내의 잘 알려진 심볼(well-known symbols)에서 어떤 시스템 심볼이 있는지 살펴보자

    • Symbol.hasInstance
    • Symbol.isConcatSpreadable
    • Symbol.iterator
    • Symbol.toPrimitive
    • 기타 등등

    객체가 어떻게 원시형으로 변환되는지 알기 위해선 Symbol.toPrimitive에 대해 알아야 하는데 자세한 내용은 다음시간에 알아보도록 하겠다.

    728x90
    반응형
    LIST

    댓글

Designed by Tistory.