Object ์ฌํ ํด์ฆ
1. ๊ฐ์ฒด obj๋ฅผ ๊น์ ๋ณต์ฌ(Deep Copy)ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
const obj = { a: 1, b: { c: 2 } };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
JSON.parse(JSON.stringify(obj))
const copy = JSON.parse(JSON.stringify(obj));
console.log(copy);
2. ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ด ๊ฐ์์ง ์์ ๋น๊ต(shallow equal)ํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
const a = { x: 1, y: 2 };
const b = { x: 1, y: 2 };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
Object.keys, every, ===
function shallowEqual(obj1, obj2) {
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) return false;
return keys1.every(k => obj1[k] === obj2[k]);
}
console.log(shallowEqual(a, b));
3. ๊ฐ์ฒด user์ getter/setter๋ฅผ ์ถ๊ฐํ์ฌ age๊ฐ 0~120 ์ฌ์ด๋ง ํ์ฉ๋๊ฒ ํ์ธ์.
const user = { _age: 20 };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
Object.defineProperty ๋๋ get/set
Object.defineProperty(user, 'age', {
get() { return this._age; },
set(v) { if (v >= 0 && v <= 120) this._age = v; }
});
user.age = 130;
console.log(user._age); // 20
4. ๊ฐ์ฒด person์ sayHello ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ ์คํํ์ธ์.
const person = { name: 'Ghost' };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
person.sayHello = function() { ... }
person.sayHello = function() {
console.log('์๋
ํ์ธ์, ' + this.name);
};
person.sayHello();
5. ์์ฑ์ ํจ์๋ก User ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ์ธ์คํด์ค๋ฅผ ์์ฑํ์ธ์.
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
function User(name, age) { ... }
function User(name, age) {
this.name = name;
this.age = age;
}
const u = new User('Ghost', 20);
console.log(u);
6. User ์์ฑ์์ sayHello ๋ฉ์๋๋ฅผ ํ๋กํ ํ์
์ผ๋ก ์ถ๊ฐํ์ธ์.
function User(name) { this.name = name; }
const u = new User('Ghost');
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
User.prototype.sayHello = ...
User.prototype.sayHello = function() {
console.log('Hi, ' + this.name);
};
u.sayHello();
7. ๊ฐ์ฒด์ key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ง๋์ธ์.
const obj = { b: 2, a: 1, c: 3 };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
Object.keys(obj).sort()
console.log(Object.keys(obj).sort());
8. ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ฉฐ age๋ฅผ 25๋ก ๋ณ๊ฒฝํ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋์ธ์.
const user = { name: 'Ghost', age: 20 };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
์คํ๋ ๋ ์ฐ์ฐ์ ์ฌ์ฉ
const newUser = { ...user, age: 25 };
console.log(newUser);
9. ๊ฐ์ฒด obj์ ๋ชจ๋ ๊ฐ์ด true์ธ์ง ํ๋ณํ์ธ์.
const obj = { a: true, b: true, c: false };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
Object.values + every
console.log(Object.values(obj).every(Boolean));
10. ๊ฐ์ฒด obj์ key์ value๋ฅผ ๋ค์ง์ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋์ธ์.
const obj = { a: 1, b: 2 };
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
Object.entries + reduce
const swapped = Object.entries(obj).reduce((acc, [k, v]) => {
acc[v] = k;
return acc;
}, {});
console.log(swapped);