Symbol

어승준·2023년 10월 15일

JS 스터디

목록 보기
13/26
post-thumbnail

📌 프로그래밍을 하면서 Symbol을 사용한다면 어떻게 사용 할 것인 지 말해주세요.

  • Symbol을 객체의 속성 키로 사용하여 고유한 식별자를 생성할 수 있습니다.
  • Symbol을 사용하여 일부 속성을 의도적으로 숨길 수 있습니다. 이는 내부 구현 세부 정보를 외부에서 감추거나, 접근 권한을 제한하는 데 유용합니다.

📌 Object.getOwnPropertySymbols() 메서드는 무엇을 반환하나요?

  • 주어진 객체에서 직접 찾은 모든 심볼 속성들의 배열을 반환합니다.
const object1 = {};
const a = Symbol('a');
const b = Symbol.for('b');

object1[a] = 'localSymbol';
object1[b] = 'globalSymbol';

const objectSymbols = Object.getOwnPropertySymbols(object1);

console.log(objectSymbols.length);
// Expected output: 2

📌 Symbol을 사용하는 이유는 무엇인가요?

  • 심벌은 변경 불가능한 원시 타입의 값입니다. 다른 값과 중복되지 않는 유일무이한 값이다. 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용합니다.

📌 Symbol을 사용할 때의 주의사항에 대해 설명해주세요.

  • 기존 Symbol을 재사용하거나 복제할 수 없습니다.
  • 심벌 값을 프로퍼티 키로 사용하려면 프로퍼티 키로 사용할 심벌 값에 대괄호를 사용해야 한다.
  • for...in 루프나 Object.keys()를 통해 열거할 수 없습니다.

📌 Symbol의 정적 메서드 두 가지에 대해 설명해 주세요.

  • Symbol.for
    • 인수로 전달받은 문자열을 키로 사용하여, 키와 심벌 값의 쌍들이 저장되어 있는 전역 심벌 레지스트리에서 해당 키와 일치하는 심벌 값을 검색한다.
    • 검색에 성공 시 새로운 심벌 값 생성하지 않고 검색된 심벌 값을 반환한다.
    • 검색에 실패 시 새로운 심벌 값을 생성하여, Symbol.for 메서드의 인수로 전달된 키로 전역 심벌 레지스트리에 저장한 후, 생성된 심벌 값을 반환한다.
  • Symbol.keyFor
    • 전역 심벌 레지스트리에 저장된 심벌 값의 키를 추출할 수 있다.
profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글