[자바스크립트] Symbol 써먹기

개발새발·2022년 1월 11일
0
post-thumbnail

자바스크립트로 뭔가를 작성할 때, Object 객체를 아주 많이 사용한다.
근데 작성자가 임의로 정의한 Object의 key가 어느 날 자바스크립트에서 사용되는 내장된 key와 동일하면 문제가 발생할 수 있다.

이러한 문제를 방지하고자 사용하는게 Symbol 객체이다.
symbol은 충돌이 일어나지 않는 유일한 key 값을 만들어준다.

let school = {
  grade: "1학년",
  classNo: "3반",
  getFullclass: function () {
    return this.grade + " " + this.classNo;
  },
};
console.log(school.getFullclass());

for (const key in school) {
  console.log(key);
}


getFullclass 라는 키를 추가했고, key 목록을 출력해봤다. 결과로 키 값이 다 노출되고있다.

반면 Symbol을 사용해서 동일한 결과를 만들어보면

let school2 = {
  grade: "1학년",
  classNo: "3반",
};

let getFullclass = Symbol("getFullclass");
school2[getFullclass] = function () {
  return this.grade + " " + this.classNo;
};

for (const key in school2) {
  console.log(key);
}


key를 출력하면 임의로 추가한 key인 getFullclass가 안보인다

console.log(school2[getFullclass]()); 


콘솔로 추가한 키 값을 찍어보면 정상적으로 추가한 키의 데이터가 나온다.

0개의 댓글