DeepDive(JS)-04편

개미는뚠뚠·2022년 11월 28일
0

JavaScript

목록 보기
7/7
post-thumbnail

아직도 나는 자바스크립트 핵심에 대해서 부족하다고 많이 느낀다...뭔가 해야하는 일은 많은데 시간이 부족하다고 느끼는...🥲
암튼,,,오늘은 자바스크립트 Symbol의 개념부터 다시 잡아보려고 한다.


Symbol이란?

기본적으로 자바스크립트는 아래와 같은 타입을 가지고 있다.

원시 타입 (primitive data type)

  • Boolean
  • null
  • undefined
  • Number
  • String

객체 타입 (Object type)

  • Object

심볼(Symbol)은 ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심볼은 주로 이름 충돌 위험이 없는 객체의 프로퍼티 키를 만들기 위해 사용한다.

Symbol의 생성

  • symbol은 symbol() 함수로 생성한다.
  • symbol 함수는 호출될 때마다 symbol값을 생성한다.
  • symbol은 객체가 아니라 변경 불가능한 원시타입의 값이다.
  • symbol() 함수에는 문자열을 인자로 전달할 수 있지만, 어떠한 영향을 주지 않으며, 생성된 symbol의 설명으로 디버깅 용도로만 사용한다.
let callSymbol = Symbol();

console.log(callSymbol);        // Symbol()
console.log(typeof callSymbol); // symbol

Symbol의 사용

  • Symbol 값도 객체의 프로퍼티 키로 사용할 수 있다.
  • Symbol 값을 키로 갖는 프로퍼티는 다른 어떠한 프로퍼티와도 충돌하지 않는다.
const obj = {};

const mySymbol = Symbol('mySymbol');
obj[mySymbol] = 123;

console.log(obj); // { [Symbol(mySymbol)]: 123 }
console.log(obj[mySymbol]); // 123

Symbol 객체

  • Symbol을 다음과 같이 콘솔로 찍으면 다음과 같이 함수 객체라고 정의한다.
  • Symbol 객체는 프로퍼티와 메서드를 가지고 있다. Symbol 객체의 프로퍼티 중에 length와 prototype을 제외한 프로퍼티를 Well-Known Symbol이라 부른다.


일단은 심볼의 개념에 대해서만 정리하였는데 Well-Known Symbol은 추후에 알아보는걸로...(절대 귀찮아서 아님...🤥)

0개의 댓글