자바스크립트 es6에 추가된 원시 데이터 타입이다.
Symbol 은 고유한 데이터이다.
const a = Symbol("id");
const b = Symbol("id");
console.log(a === b);
//a 와 b 는 다르므로 false 이다.
Symbol 은 생성자에서 하나의 파라미터를 가진다.
이것은 Value 가 아니며 설명을 나타내는 문자열이다.
Symbol 을 선언하고 object 의 Key 로 사용 할 수 있다.
string 으로 키를 선언했다면 동일한 키를 선언해서 덮어씌우는 경우가 생길수 있지만
Symbol 로 선언하면 unique 하기 때문에 그런 케이스가 생기지 않는다.
let admin = {
name : "gildong"
};
let id = Symbol("id");
admin[id] = 1;
console.log(admin[id]);
Object literal 안에서도 Symbol 을 사용 할 수 있다.
const ID = Symbol("id");
let admin = {
name : "gildong",
[ID] : 123
//상수개념으로 사용되므로 대문자로 설정한다.
};
객체를 for 문으로 열거할 때 Symbol 은 제외가 된다.
const ID = Symbol("id");
let admin = {
name : "gildong",
[ID] : 123
};
for(key in admin) console.log(key);
//name 만 열거된다.
Object.getOwnPropertySymbols() 를 사용하여 Symbol 을 가져올 수 있다.
Object.getOwnPropertySymbols(obj).forEach(el=>console.log(el))