ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이며, 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용됨
- 객체 속성(object property)을 만들 수 있는 원시 데이터 형식(primitive data type)이다.
- Symbol 의 valueof 는 원시형 값이 아니다. 때문에 문자형과 합칠수 없다.
- Symbol() 함수는
String
,Number
,Boolean
과 같이 래퍼 객체를 생성하는 생성자 함수와는 달리 new 연산자를 사용하지 않는다.
Symbol();
Symbol.for();
Symbol.iterator
var sym1 = Symbol();
var sym2 = Symbol("foo");
var sym3 = Symbol("foo");
Symbol("foo") === Symbol("foo"); // false
var sym = new Symbol(); // TypeError
const obj = {};
const mySymbol = Symbol('mySymbol');
obj[mySymbol] = 123;
console.log(obj); // { [Symbol(mySymbol)]: 123 }
console.log(obj[mySymbol]); // 123
반복 심볼 | 정규표현식 심볼 | 그 외 심볼 |
---|---|---|
Symbol.iterator |
Symbol.match |
Symbol.hasInstance |
Symbol.asyncIterator |
Symbol.replace |
Symbol.isConcatSpreadable |
Symbol.search |
Symbol.unscopables |
|
Symbol.split |
Symbol.species |
|
Symbol.toPrimitive |
||
Symbol.toStringTag |