JavaScript ES6 문법 - Symbol

박재휘·2024년 3월 4일

JavaScript

목록 보기
16/19
post-thumbnail

1. Symbol

공식페이지에서는 다음과 같이 설명한다.

Symbol 은 생성자가 symbol 원시 값을 반환하는 내장 객체입니다. symbol 원시 값은 심볼 값, 혹은 짧게 심볼이라고만 부르며 고유함이 보장됩니다. 심볼은 객체에 속성을 추가할 때 고유한 키를 부여하여 다른 코드와 충돌하지 않도록 할 때 많이 쓰이며, 이렇게 추가한 속성은 일반적인 방법으로는 접근할 수 없으므로 약한 형태의 캡슐화, 혹은 정보 은닉을 제공합니다.

  • Symbol은 Object자료형에 비밀스러운(key로 접근할 수 없는) key값을 부여하기 위해 사용한다.
  • 속성 충돌을 방지하고 객체 속성을 보호하는 데 유용하게 활용된다.

2. Symbol 사용법

생성

Symbol() 를 사용한다.
괄호 안에는 자료에 대한 주석을 적는다.

var sym = Symbol('설명을 적는 공간');

활용

오브젝트[ 심볼명 ] = 데이터

var person = { name: "Kim", age: 20 };

var weight = Symbol("비밀이야기"); // 데이터에 대한 주석을 적는다
person[weight] = "아직도 파워레인저 좋아함"; // 데이터를 입력한다

console.log(person);
  • 다음과 같이 오브젝트에 직접 입력도 가능하다. ([]안에 넣어야함)
var height = Symbol('비밀스러운 나의 몸무게');

var person = { name : 'Kim', [height] : 60 };
  • 심볼은 반복문이 감지하지 않기 때문에 비밀스러운 내용을 저장할 수 있다.

결과


3. Symbol 특징

  1. 같은 주석을 넣어도 같은 Symbol이 아니다.
    var a = Symbol('설명1');
    var b = Symbol('설명1');
    console.log(a === b); // false
    • Symbol()을 사용할 때마다 각각 유니크한 Symbol이 생성되기 때문이다.
  2. 전역심볼
  • Symbol.for()로 같은 값을 가지면 같은 변수로 취급하는 전역 심볼을 만들 수 있다.
    var a = Symbol.for('설명1');
    var b = Symbol.for('설명1');
    console.log(a === b); // true
  • Symbol.for()은 새로운 심볼을 만들 때 주석이 같으면 원래있던 심볼을 가져오기 때문이다.
profile
차곡차곡 열심히

0개의 댓글