2022. 6. 9. 12:40ㆍcoding tutorial/Java Script
Symbol 형은 유일한 식별자이다. 전체 코드 중 딱 하나라는 의미로 유일성이 보장됨.
내용이 일치해도 일치연산자(===), 동등 연산차(==) 로 확인해보면 false.
Symbol();
- 괄호 안에 '문자열'을 넣어 설명을 붙일 수도 있으며 이는 디버깅 할 때 편함. 심볼 생성에는 어떠한 영향도 미치지 않음. 위와 같이 설명이 같아도 다른 값으로 뜸.
- Object.keys(), Object.values(), Object.entries() 등의 메소드나 for(.. in ..) 문은 Symbol형인 프로퍼티는 건너 뛴다.
이와 같은 특성을 이용하여 특정 개체의 원본 데이터는 건드리지 않고 속성을 추가할 수 있다.
타인이 만든 객체에 자신의 속성을 추가하여 덮어쓰면 안되므로..
가끔 전역변수처럼 이름이 같으면 같은 객체를 가르켜야할 때가 있음. 이때 사용하는 것이 '전역심볼'.
Symbol.for() : 전역 심볼
- 하나의 심볼만 보장받을 수 있음
- 없으면 만들고, 있으면 가져오기 때문이다.
- Symbol 함수는 매번 다른 Symbol 값을 생성하지만, Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유.
Symbol.keyFor(전역심볼) : 전역 심볼 이름을 불러오는 메서드
심볼변수.description : 전역 심볼이 아닌 심볼은 keyFor을 사용할 수 없다. 대신 dscription 메서드를 사용하여 이름을 알 수 있다.
숨겨진 Symbol key 보는 법
Object.getOwnPropertySymbols(변수); : 심볼 찾기
Reflect.ownKeys(변수); : 객체 프로퍼티 중 심볼을 포함한 모든 키 찾기
실습 EX) 타인이 만든 객체 user에 showName이라는 심볼을 추가하기.
ㄴ 타인이 만든 코드에 영향을 미치지 않으며 메서드를 추가.
ㄴ user 객체에 이런 이름의 메서드가 있었는지 고민할 필요가 없으며 다른 사람이 만들어놓은 프로퍼티를 덮어쓸 일도 없음.
'coding tutorial > Java Script' 카테고리의 다른 글
[JS] 문자열 메소드 (String Method) (0) | 2022.06.16 |
---|---|
[JS] 숫자, 수학 method (Number, Math) (0) | 2022.06.15 |
[JS] 객체 메소드와 Computed property (0) | 2022.06.09 |
[JS] 생성자 함수 (0) | 2022.06.09 |
[JS] TDZ와 호이스팅 (0) | 2022.06.09 |