[TIR] 심볼(Symbol)
6개의 타입(자료형)을 가지고 있던 ECMAScript에 새롭게 생긴 7번째 타입인 심볼에 대해 복습해봅시다.
Symbol이란?
- 어플리케이션 전체에서 유일
- 변경 불가능한(immutable) 기본 자료형(primitive) 값
- 주로 객체의 프로퍼티 키(property key)로 사용
- 유일한 식별자(unique identifier)를 만들고 싶을 때 사용
Symbol의 특징
심볼은 Symbol형식의 반환 값을 가지며 내장 객체(built-in objects)의 여러 멤버를 가르키는 정적 프로퍼티와 전역 심볼 레지스트리(global symbol registry)를 가리키는 정적 메서드를 가집니다. "new Symbol()" 문법을 지원하지 않아 생성자 측면에서는 불완전한 내장 객체 클래스(built-in object class)와 유사합니다.
JS의 7타입
- 원시 데이터형(primitive data type)
- 객체가 아니면서 메서드도 가지지 않는 데이터
- 종류 : string, number, bigint, boolean, undefined, symbol
- 객체형(Object type)
- 데이터 및 데이터 작업에 대한 지침을 포함하는 데이터 구조
- 종류 : object
Symbol의 예제
Symbol Constructor
const s1 = Symbol();
const s2 = Symbol(113);
const s3 = Symbol('jenna');
const s4 = new Symbol(); // Error: Symbol is not a constructor
const o = Object(s1);
console.log(s1); //Symbol()
console.log(typeof s1); //"symbol"
console.log(s2 === 113); // false
console.log(s3.toString()); // "Symbol(jenna)"
console.log(Symbol('jenna') === Symbol('jenna'));// false
console.log(typeof o); //"object"
Symbol for...in
const obj = {};
obj[Symbol("a")] = 1;
obj[Symbol.for("b")] = 2;
obj["c"] = 3;
obj.d =4;
for (let o in obj) {
console.log(o); // "c" "d"
}
console.log(Object.getOwnPropertySymbols(obj)); //Array [Symbol(a), Symbol(b)]
Symbol wrapper object
const obj = {};
const s = Symbol('hehe');
obj[s] = 1;
console.log(obj); // { [Symbol(hehe)]: 1 }
console.log(obj[s]); // 1
const sym = Symbol('hi');
const o = {[sym]: 1};
console.log(o[sym]); // 1
console.log(o[Object(sym)]); // 1
이렇게 심볼에 대해 알아보았습니다.
즐거운 하루되세요! 앗농!🙋🏻♀️
Author And Source
이 문제에 관하여([TIR] 심볼(Symbol)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jenna/TIR-심볼Symbol저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)