2020.05.29 Javascript ES6 Symbol
ES6에서 새로운 데이터 타입인 Symbol을 배워보려고 한다.
우선 Symbol은 ES6에서 새롭게 발표된 데이터타입이다.
Symbol의 특징은 유일무이한 데이터를 준다는것이다.
a와 b가 서로 같은 값을 가졌는데도 서로 비교해보면 false가 나온다.
왜그럴까?
말 그대로 정말 유일한 값을 가지기 때문이다.
그럼 toString()을 줘도 값이 안나오는건 어떻게 해결할까?
for메소드와 keyFor 메소드를 사용해야한다.
for메소드와 keyFor 메소드를 사용하면 서로 비교했을때도 같아지고 값에도 접근이 가능해진다.
왜 가능해질까?
바로 key라는 애 때문이다.
key는 심볼을 구분하기 위해 쓰여진다.
변수명 = Symbol.for('키값')을 넣어주면 된다.
*** key는 for와 keyFor 메소드를 사용할때만 유효하다 ***
지금까지 유일한 값에 대해서 말을했다.
Symbol은 한가지 더 특징을 가지고 있다.
이게 Symbol의 제일 핵심적인 요소이다.
바로 외부로 값을 노출시키지 않는것이다.
외부에서 접근하면 안되는 값들을 Symbol로 지정해두면 보안성에 좋은것이다.
user정보는 외부로 값을 노출시키면 안되기때문에 user값을 Symbol로 정해두었다.
그리고 index.js에서 user 인스턴스를 새로 생성하고
user의 값을 정해두었던 update 메소드를 부르고
user.js의 get 메소드를 불러오면 결과가 나온다.
만일 Symbol을 사용하지 않았다면 index.js에서 user 인스턴스를 생성하고
내가 원하는대로 update 메소드에서 값을 접근했을것이다.
하지만 Symbol을 사용하여 그런 취약한 보안성을 보완해주는것이다.