ES6부터 Symbol이라는 새로운 Primitive 자료형이 추가되었습니다. 이 자료형은 주로 Object의 비밀스런 key로 활용되어, 기존 문자형 key와는 다른 특수한 성질을 가집니다.
var 심볼 = Symbol('설명아무거나적기');
Symbol() 함수에 간단한 설명(라벨)을 입력하면 해당 설명을 가진 Symbol이 생성됩니다.var person = { name: 'Kim' };
person.weight = 100;
var weight = Symbol('내 진짜 몸무게');
person[weight] = 200;
console.log(person);
person 객체에 일반 key인 weight와, Symbol key인 weight가 모두 저장됩니다.var height = Symbol('내 키임');
var person = {
name: 'Kim',
[height]: 160
};
var a = Symbol('설명1');
var b = Symbol('설명1');
console.log(a === b); // false
Symbol.for()를 사용하면, 동일한 설명에 대해 이미 생성된 Symbol을 재사용할 수 있습니다.
var a = Symbol.for('설명1');
var b = Symbol.for('설명1');
console.log(a === b); // true
전역 심볼 레지스트리에 저장되어, 같은 설명을 가진 Symbol은 동일한 객체로 취급됩니다.
[Symbol.iterator] 심볼이 있어서 배열을 이터러블(iterable)하게 만듭니다.var array = [2, 3, 4];
console.log(array[Symbol.iterator]);
Symbol()을 사용해 고유한 식별자를 만들 수 있으며, 이를 Object의 key로 사용하면 기존 문자열 key와 충돌하지 않고 은닉성을 부여할 수 있습니다.