const obj = {
1: '1 입니다',
false : '거짓',
}
Object.keys(obj);
❗️ 숫자형, 불린형을 Object.keys로 프로퍼티 keys를 가지고 오면 1, false가 문자형으로 반환
🖍️ 심볼 ( Symbol )
- 유일한 식별자를 만들 때 사용 (유일성 보장)
const a = Symbol();
const b = Symbol();
console.log(a);
console.log(b);
a == b;
a === b;
a 와 b console로 확인하면 생긴건 같지만 동등/일치 연산자로 확인하면 false가 나옴
-----------------------------------------------------------------
const id = Symbol('id');
const id2= Symbol('id');
> id
Symbol(id)
> id2
Symbol(id)
id == id2;
id === id2;
-----------------------------------------------------------------
const id = Symbol('id');
const user = {
name : 'Mike';
age : '30',
[id] : 'myid',
}
> user
{name: "Mike", age: 30, Symbol(id): myid}
> user[id]
object.keys(user);
object.values(user);
object.entries(user);
for(let a in user){}
❗️ key가 Symbol형인 property는 건너뜀
❗️ for...in 도 건너뜀
-----------------------------------------------------------------
const user = {
name : 'Mike',
age : 30,
}
const id = Symbol('id');
user[id] = 'myid';
user.name = 'myname';
❗️특정위치에 원본은 건드리지 않고 속성을 추가할 수 있음
💟 Symbol.for() : 전역 심볼
- 하나의 심볼만 보장받을 수 있음
- 없으면 만들고, 있으면 가져오기 때문
- Symbol 함수는 매번 다른 Symbol값을 생성하지만,
- Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유
const id1 = Symbol.for('id');
const id2 = Symbol.for('id');
id1 === id2;
Symbol.keyFor(id1)
const id = Symbol('id 입니다');
id.description;
💟 숨겨진 Symbol Key 보는 법
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid',
}
Object.getOwnPropertySymbols(user);
> [Symbol(id)]
Reflect.ownKeys(user);
> ["name", "age", Symbol(id)]
⭐️ 대부분 라이브러리 내장 함수는 이러한 메소드는 사용하지 않으니 유일한 프로퍼티를 추가하고 싶을때 심볼 사용하기
🔥 예제
const user = {
name: "Mike",
age: 30,
};
...
const showName = Symbole('show name');
user[showName] = function () {
console.log(this.name);
}
user[showName]();
...
for (let key in user) {
console.log(`His ${key} is ${user[key]}`)
}