const obj = {
1: ‘1입니다.‘,
false: ‘거짓’
}
const key = Object.keys(obj);
console.log(keys); // { “1”: “1입니다.“, ”false”: “거짓”}
console.log(obj[“1”]);
console.log(obj[“false”]);
객체의 키로 문자형 외에 사용 가능한 자료형이 심볼(Symbol)
심볼은 유일한 식별자를 만들때 사용한다.
const a = Symbol(); // new를 붙이지 않는다
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’); // 이와 같이 문자열을 붙여주면 디버깅 시 편하다.
console.log(id); // Symbol(id)
const id1 = Symbol(‘id’);
const id2 = Symbol(‘id’);
console.log(id1 === id2); // false
console.log(id1 == id2); // false
const identify = Symbol(‘아이디‘);
const user = {
name: ‘Mike’,
age: 30,
[identify]: ‘myid’
}
console.log(user); // { name: ‘Mike’, age: 30, Symbol(아이디): ’myid’ }
console.log(Object.keys(user)); // [ ‘name’, ‘age’ ]
console.log(Object.values(user)); // [ ‘Mike’, ‘30’ ]
console.log(Object.entries(user)); // [ [‘name’: ‘Mike’], [‘age’: 30] ]
const identify = Symbol(‘아이디‘);
const user = {
name: ‘Mike’,
age: 30,
[identify]: ‘myid’
}
for (let key in user) {
console.log(key); // name, age
}
const id1 = Symbol.for(‘id‘);
const id2 = Symbol.for(‘id’);
console.log(`${id1 === id2} 입니다.`); // ’true 입니다.‘
const id = Symbol.for(‘id’);
console.log(Symbol.keyfor(id)); // ‘id’
const name = Symbol(‘Tom’);
console.log(name.description); // ‘Tom’
const id = Symbol(‘id’);
const user = {
name : ‘Jane’,
[id]: 1
}
Object.getOwnPropertySymbols(user); // Symbol(id)
Reflect.ownKeys(user); // 심볼형을 포함한 객체의 모든 key를 반환
const hobby = Symbol(‘취미’);
const person = {
name: ‘Brown’,
age: 28
}
person[hobby] = ‘축구’;
console.log(person);
const sayName = Symbol(‘sayName’);
const human = {
name: ‘김한국’,
age: 30
}
human[sayName] = function() {
console.log(this.name);
};
human[sayName]();
💡 심볼은 자료형이다 그냥 문자형이라고 생각하면 쉽다.
객체 원본에 키를 추가 하고 싶을때 이미 모듈화된 기능들에 영향을 미치지 않고 싶을때 사용한다.