직무적성검사
인적성 수리 문제
예를 들어, 4방향, 즉 위, 아래, 왼쪽, 오른쪽을 나타내는 상수를 정의한다고 생각해보자.
const Direction = {
UP: 1,
DOWN: 2,
LEFT: 3,
RIGHT: 4
};
const myDirection = Direction.UP;
if (myDirection === Direction.UP) {
console.log('You are going UP.');
}
if(myDirection === Direction.UP) { console.log(‘You are going UP.’); }
## 33.4 심벌과 프로퍼티 키
- 객체의 프로퍼티 키는 빈 문자열을 포함하는 모든 문자열 또는 심벌 값으로 만들 수 있으며, 동적으로 생성할 수 도 있다.
- 심벌 값을 프로퍼티 키로 사용하려면 프로퍼티 키로 사용할 심벌 값에 대괄호를 사용해야 한다.
- 프로퍼티에 접근할 때도 마찬가지로 대괄호를 사용해야 한다.<br>
![image](https://github.com/jiyoon-lee/jiyoon-lee.github.io/assets/59562141/0e40b4f5-343e-4ee3-8540-ba35b55e109c)<br>
- 심벌 값은 유일무이한 값이므로 심벌 값으로 프로퍼티 키를 만들면 다른 프로퍼티 키와 절대 충돌하지 않는다.
## 33.5 심벌과 프로퍼티 은닉
- 심벌 값을 프로퍼티 키로 사용하여 생성한 프로퍼티는 for...in 문이나 Object.keys, Object.getOwnPropertyNames 메서드로 찾을 수 없다.
- 심벌 값을 프로퍼티 키로 상요하여 프로퍼티를 생성하면 외부에 노출할 필요가 없는 프로퍼티를 은닉할 수 있다.<br>
![image](https://github.com/jiyoon-lee/jiyoon-lee.github.io/assets/59562141/e1d5fed5-9012-498f-9389-0b2684e78430)<br>
하지만 프로퍼티를 완전하게 숨길 수 있는 것은 아니다. ES6에서 도입된 Object.getOwnPropertySymbols 메서드를 사용하면 심벌 값을 프로퍼티 키로 사용하여 생성 프로퍼티를 찾을 수 있다.<br>
![image](https://github.com/jiyoon-lee/jiyoon-lee.github.io/assets/59562141/36a2e2d4-1624-4c1d-b4eb-afe8f0a340f5)
## 33.6 심벌과 표준 빌트인 객체 확장
- 일반적으로 표준 빌트인 객체에 사용자 정의 메서드를 직접 추가하여 확장하는 것은 권장하지 않는다.
- 표준 빌트인 객체는 읽기 전용으로 사용하는 것이 좋다.
- 그 이유는 개발자가 직접 추가한 메서드와 미래에 표준 사양으로 추가될 메서드의 이름이 중복될 수 있기 때문이다.<br>
![image](https://github.com/jiyoon-lee/jiyoon-lee.github.io/assets/59562141/cd4d773a-2415-4ecd-b316-a33dc24f835d)<br>
- 중복될 가능성이 없는 심벌 값으로 프로퍼티 키를 생성하여 표준 빌트인 객체를 확장하면 표준 빌트인 객체의 기존 프로퍼티 키와 충돌하지 않는 것은 물론, 표준 사양의 버전이 올라감에 따라 추가될지 모르는 어떤 프로퍼티 키와도 충돌할 위험이 없어 표준 빌트인 객체를 확장할 수 있다.<br>
![image](https://github.com/jiyoon-lee/jiyoon-lee.github.io/assets/59562141/8f913bbf-7089-4e8d-ace8-16c09044c71a)
## 33.7 Well-known Symbol
- 자바스크립트가 기본 제공하는 빌트인 심벌 값이 있다.
- 빌트인 심벌 값은 Symbol 함수의 프로퍼티에 할당되어 있다.
- 자바스크립트가 기본 제공하는 빌트인 심벌 값은 ECMAScript 사양헤서는 Well-known Symbol이라 부른다.
- 예를 들어, Array, String, Map, Set, TypedArray, arguments, NodeList, HTMLCollection과 같이 for...of 문으로 순회 가능한 빌트인 이터러블은 Well-known Symbol인 Symbol.iterator를 키로 갖는 메서드를 가진다.
# 문제
const mySymbol = Symbol(‘hello’);
// 답이 hello인것을 모두 고르시오. Symbol.for(‘mySymbol’); // 1 Symbol.for(mySymbol); // 2 mySymbol.description; // 3 Symbol.keyFor(‘mySymbol’); // 4 Symbol.keyFor(mySymbol); // 5 ```
mySymbol.description; // 3
Leave a comment