property key: 문자형
const obj = {
1 : '1입니다.'
false : '거짓'
}
Object.keys(obj) ; ["1", "false"] → 키값이 다 문자형임.
----------------------------------------------------------------------------------------
<심볼(Symbol)형>
'유일한 식별자'를 만듬.
const a = Symbol(); //new를 붙이지 않는다.
const b = Symbol();
console.log(a) //Symbol()
console.log(b) //Symbol()
a === b ; //false
a == b; //false
●유일성 보장
const id = Symbol('id'); // 설명을 붙여줄 수 있음(문자열로 - 심볼 생성에는 영향x)
const id2 = Symbol('id'); // id !== id2, id !===id2
●property key : 심볼형
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
//{name: "Mike", age:30, Symbol(id): "myid"}
console.log(user[id]) //"myid"
object를 찍어보면 symbol형을 가진 키값은 모두 건너고 반환됨.
→ Object.keys(user); //["name", "age"]
Object.values(user); //["Mike", 30]
Object.entries(user); //[Array(2), Array(2)]
→Symbol 쓰임
-특정 위치에 원본을 건드리지 않고 추가할 수 있다.
const user = {
name : 'Mike',
age : 30
}
↑
const id = Symbol('id');
user[id] = 'myid';
user.name = 'myname' ; (x)
user.a_key_no_one_user = 'hahaha' ; (x)
●Symbol.for() : 전역 심볼
-하나의 심볼만 보장받을 수 있음.
-없으면 만들고, 있으면 가져오기 때문
-Symbol함수는 매번 다른 Symbol값을 생성하지만
-Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유
const id1 = Symbol.for('id');
const id2 = Symbol.for('id');
id1 === id2; true
Symbol.keyFor(id1) //"id" -id1의 이름을 알 수 있음.
●description
const id = Symbol('id 입니다.');
id.description; //"id 입니다." -id의 이름 알 수 있음.
●숨겨진 Symbol Key 보는 법
const id = Symbol('id');
const user = {
name : 'Mike',
age: 30,
[id] : 'myid'
}
Object.getOwnPropertySymbols(user);
Reflect.ownKeys(user);
//다른 개발자가 만들어 놓은 객체
const user = {
name : "Mike",
age : 30,
};
//나의 작업
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]}.`);
}
'프로그래밍 > Javascript' 카테고리의 다른 글
자바스크립트 중급 6- 문자열 메소드(String methods) (0) | 2023.06.12 |
---|---|
자바스크립트 중급 5 -숫자, 수학 method (Number, Math) (0) | 2023.06.12 |
자바스크립트 중급 3- 객체 메소드(Object methods), 계산된 프로퍼티(Computed property) (0) | 2023.06.11 |
자바스크립트 중급 2 - 생성자 함수 (0) | 2023.06.10 |
자바스크립트 중급 1- 변수, 호이스팅, TDZ(Temporal Dead Zone) (0) | 2023.06.10 |