// 유일성 보장
// Symbol('설명') 디버깅할때 편함
// new를 붙이지 않는다
const a = Symbol();
const b = Symbol();
console.log(a); //결과 Symbol()
console.log(b); //결과 Symbol()
console.log(a === b); //결과 false
console.log(a == b); //결과 false
const id = Symbol('id');
const id2 = Symbol('id');
console.log(id); //결과 Symbol(id)
console.log(id2); //결과 Symbol(id)
console.log(a === b); //결과 false
console.log(a == b); //결과 false
//property key 심볼형
//Object.keys, values, entries, for ... in 은 모두 심볼형 프로퍼티는 건너뜀
const id3 = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id3] : 'myid'
}
console.log(user);
//Symbol.for() 전역 심볼
//하나의 심볼만 보장받을 수 있음 이유는 없으면 만들고, 있으면 가져오기 때문
//Symbol 함수는 매번 다른 Symbol 값을 생성하지만, Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유
const id4 = Symbol.for('idid');
const id5 = Symbol.for('idid');
console.log(id4 === id5); // 결과 true
원본을 훼손하지 않으면서 내가 작업한것을 사용할때 Symbol을 사용
ex)
// 다른 개발자가 만들어 놓은 객체
const user = {
name: 'Mike',
age: 30
}
// 내가 작업
// user.showName = function() {};
const showName = Symbol("show name");
user[showName] = function() {
console.log(this.name);
};
user[showName]();
// 사용자가 접속하면 보는 메세지
for (let key in user) {
console.log(`His ${key} is ${user[key]}.`);
}
'Dev > JAVASCRIPT' 카테고리의 다른 글
Javascript JS 문자열 메소드 (1) | 2024.01.29 |
---|---|
Javascript JS 숫자, 수학 메소드 (Number, Math) (0) | 2024.01.29 |
Javascript JS 객체 메소드(Object methods), 계산된 프로퍼티(Computed property) (0) | 2024.01.29 |
Javascript JS 생성자 함수(new) (0) | 2024.01.29 |
Javascript JS 배열(array) (0) | 2024.01.29 |