-
symbol의 개념 및 객체의 키값으로 활용한 예
//인수로 전달되는 문자값은 객체내부에서 보통 키값으로 활용
//설사 같은 문자값을 인수로 넣어도 반환값을 서로 다름 (객체의 키값을 고유성을 유지하기 위함)
//심볼은 주로 객체의 키값으로 지정할때 사용되며
//심볼로 생성된 키값은 객체 외부에서 접근이 불가능하기 때문에
//심볼로 생성된 키에 저장된 value값은 은닉화가능const a1 = Symbol('aa'); const a2 = Symbol('aa'); console.log(a1 === a2); //같은 문자열로 만들어진 심볼이라도 결과값은 다름 (false반환) //심볼을 객체의 키값으로 활용한 예 const key = Symbol('key'); const student = { name: '홍길동', //객체의 키값에 변수를 적용하려면 []로 감싸줌 (es6) [key]: '변경되면 안될 매우 중요한 정보' } student.name = '김영희'; console.log(student); //심볼로 적용된 key값은 호출자체가 불가능하므로 해당 심볼로 지정된 value값은 은닉화 가능
클래스 내부에서 Symbol로 멤버변수를 은닉화 예
/* class Calc { constructor() { this.count = 100; this.plus(); } plus() { return this.count++; } } const a = new Calc(); a.count = 5; console.log(a); console.log(a.plus()); console.log(a.plus()); */ const count = Symbol('증가할 값'); //해당 클래스 안쪽에 있는 멤버변수를 Symbol로 지정해서 class외부에서 해당 맴버변수값에 접근 불가처리 class Calc { constructor() { this[count] = 100; this.plus(); } plus() { return this[count]++; } } const a = new Calc(); console.log(a); console.log(a.plus()); console.log(a.plus());
'🐶 etc > 2022기록' 카테고리의 다른 글
js 요소 선택하기 (0) 2023.03.29 배열 (0) 2023.03.29 ES6에서의 객체지향 (0) 2022.11.02 객체지향의 개념 (생성자함수, prototype, ES5) (0) 2022.11.02 console.dir(btn)/addEventListener (0) 2022.10.26 댓글