JS중급_Symbol자료형
▶️ Symbol 자료형
var newSymbol = Symbol('설명');
- 원래 Object에는 문자로만 key값을 입력할 수 있다.
- Symbol은 Object자료형에 비밀스런 key값을 부여하고 싶을 때 사용한다.
▶️ Symbol의 사용처
var person = {name : 'Kim'};
person.weight = 100;
var weight = Symbol('my weight');
person[weight] = 200;
console.log(person); // { name: 'Kim', weight: 100, [Symbol(my weight)]: 200 }
- 콘솔창에 출력해보면 {[Symbol(my weight)]: 200} 이라는 자료가 들어있는데, 이렇게 특이한 이름을 가진 자료를 Object에 만들고 싶을때 Symbol을 쓴다.
- Symbol은 비밀스러운 요소이기 때문에 for in 반복문을 사용해도 감지하지 못한다. 숨겨둘 요소가 있으면 Symbol을 사용하면 된다.
var newSymbol = Symbol('설명');
var person = { name : "Kim", [height] : 160 };
- 직업 자료형에 직접 안에 입력할때는 대괄호 안에 심볼명을 담아주면 된다.
▶️ Symbol 자료형의 특징
var a = Symbol('script1');
var b = Symbol('script2');
console.log(a===b);//false
- 예제에서 a와 b 심볼은 설명이 같음에도 불구하고, 두개를 같ㄷ고 비교해보면 false가 남는다. Symbol은 Symbol()이라고 사용할 때마다 각각 유니크한 Symbol이 생성돼서 그렇다.
var a = Symbol.for('script1');
var b = Symbol.for('script2');
console.log(a===b);//true
- 이렇게 Symbol.for()를 사용하여 대소비교를 하면 위의 예시와는 달리 true를 출력한다. (전역심볼)
- 왜냐면 Symbol.for()로 새로운 Symbol을 만들때 설명이 같으면 그 설명을 가지고 있는 Symbol을 그 자리에 집어넣기 때문이다.
▶️ Symbol.iterator()
var array = [2,3,4];
console.log(array[Symbol.iterator]);
- 배열과 객체 모두 비밀스럽게 붙어있는 Symbol자료형이 있다. 예를 들면 모든 array 자료형들은 [symbol.iterator]라는 이름을 가진 심볼이 안에 있다. (Symbol을 출력하고 싶다면 오브젝트[심볼명]을 사용하면된다.)
- Symbol.iterator라는 심볼은 for of를 쓸 수 있게 도와주는 Symbol이다. 이게 존재해야 for of 반복문을 쓸 수 있다.
Author And Source
이 문제에 관하여(JS중급_Symbol자료형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@arsshavin/JS중급Symbol자료형저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)