JavaScript์์ ๊ฐ์ฒด(Object)๋ ๋ฐ์ดํฐ์ ํจ์(๋ฉ์๋)๋ฅผ ํจ๊ป ๋ด์ ์ ์๋ ์ค์ํ ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ์ฒด์ ๋ฉ์๋(Method)๋ ๊ฐ์ฒด ๋ด์ ์ ์๋ ํจ์๋ก, ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ๊ธ์์๋ JavaScript ๊ฐ์ฒด ๋ฉ์๋์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ฃผ์ ํ์ฉ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
JavaScript ๊ฐ์ฒด ๋ฉ์๋๋?
๋ฉ์๋๋ ๊ฐ์ฒด์ ์์ฑ ์ค ํ๋๋ก, ๊ฐ์ฒด ๋ด๋ถ์ ์ ์๋ ํจ์์ ๋๋ค. ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋, ๊ฐ์ฒด์ ๋์์ ์ ์ํ ์ ์์ต๋๋ค. ๋ฉ์๋๋ ์ผ๋ฐ ํจ์์ฒ๋ผ ํธ์ถ๋๋ฉฐ, ๊ฐ์ฒด์ ๊ด๋ จ๋ ์์ ์ ์ํํฉ๋๋ค.
๊ฐ์ฒด ๋ฉ์๋ ์ ์
JavaScript์์ ๊ฐ์ฒด ๋ฉ์๋๋ ํจ์์ฒ๋ผ ์ ์๋์ง๋ง, ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์๋๋ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ ์ํ๋ ๊ฐ๋จํ ์์์ ๋๋ค.
let person = {
name: "Alice",
age: 25,
greet: function() {
console.log("Hello, " + this.name);
}
};
person.greet(); // ๊ฒฐ๊ณผ: "Hello, Alice"
์ ์ฝ๋์์ greet
๋ฉ์๋๋ person
๊ฐ์ฒด์ ์์ฑ ์ค ํ๋๋ก, ๊ฐ์ฒด์ name
์์ฑ์ ์ฌ์ฉํด ์ธ์ฌ๋ง์ ์ถ๋ ฅํฉ๋๋ค. ๋ฉ์๋ ๋ด์์ this
๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
this
ํค์๋
๊ฐ์ฒด ๋ฉ์๋์์ ์ค์ํ ๊ฐ๋
์ค ํ๋๋ this
ํค์๋์
๋๋ค. this
๋ ํ์ฌ ๋ฉ์๋๊ฐ ์ํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ๋ค๋ฅธ ์์ฑ์ด๋ ๋ฉ์๋์ ์ ๊ทผํ ์ ์์ต๋๋ค.
let car = {
brand: "Tesla",
model: "Model S",
displayInfo: function() {
console.log("Car: " + this.brand + " " + this.model);
}
};
car.displayInfo(); // ๊ฒฐ๊ณผ: "Car: Tesla Model S"
this
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ car
๊ฐ์ฒด์ brand
์ model
์์ฑ์ ์ ๊ทผํ๊ณ , ์ด๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
๋ฉ์๋ ๊ฐ๋จ ์ ์ (ES6 ๋ฐฉ์)
ES6(ECMAScript 2015)๋ถํฐ๋ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ์ ์ํ ์ ์์ต๋๋ค. function
ํค์๋๋ฅผ ์๋ตํ๊ณ ๋ฐ๋ก ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
let person = {
name: "Bob",
greet() {
console.log("Hi, I'm " + this.name);
}
};
person.greet(); // ๊ฒฐ๊ณผ: "Hi, I'm Bob"
์ ์์ ์์ greet
๋ฉ์๋๋ ES6 ๋ฌธ๋ฒ์ผ๋ก ์ ์๋์์ต๋๋ค. ์ด๋ ๊ฒ ๋ฉ์๋๋ฅผ ๊ฐ๋จํ ์ ์ํ๋ฉด ์ฝ๋๊ฐ ๋์ฑ ์ฝ๊ธฐ ์ฌ์์ง๋๋ค.
JavaScript ๋ด์ฅ ๊ฐ์ฒด ๋ฉ์๋
JavaScript๋ ๋ค์ํ ๋ด์ฅ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฐ ๋ฉ์๋๋ ํน์ ์์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋๋ค. ์์ฃผ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. Object.keys()
Object.keys()
๋ฉ์๋๋ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ ์ด๋ฆ์ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
let user = {
name: "John",
age: 30,
isAdmin: true
};
let keys = Object.keys(user);
console.log(keys); // ๊ฒฐ๊ณผ: ["name", "age", "isAdmin"]
2. Object.values()
Object.values()
๋ฉ์๋๋ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ ๊ฐ์ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
let values = Object.values(user);
console.log(values); // ๊ฒฐ๊ณผ: ["John", 30, true]
3. Object.entries()
Object.entries()
๋ฉ์๋๋ ๊ฐ์ฒด์ ํค-๊ฐ ์์ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค. ๋ฐํ๋ ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ ๊ฐ์ ๊ฐ(ํค, ๊ฐ)์ ํฌํจํ๋ ๋ฐฐ์ด์
๋๋ค.
let entries = Object.entries(user);
console.log(entries); // ๊ฒฐ๊ณผ: [["name", "John"], ["age", 30], ["isAdmin", true]]
4. Object.assign()
Object.assign()
๋ฉ์๋๋ ํ๋ ์ด์์ ๊ฐ์ฒด๋ฅผ ๋์ ๊ฐ์ฒด์ ๋ณต์ฌํ๊ณ ๊ฒฐํฉํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ฒด ๋ณต์ฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
let target = { name: "Alice" };
let source = { age: 30 };
let result = Object.assign(target, source);
console.log(result); // ๊ฒฐ๊ณผ: { name: "Alice", age: 30 }
Object.assign()
์ source
๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ์ target
๊ฐ์ฒด์ ๋ณต์ฌํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฐ์ฒด ๋ฉ์๋ ํ์ฉ ์์
๊ฐ์ฒด ๋ฉ์๋๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋์ ์ ์ํ ๋ ์ ์ฉํฉ๋๋ค. ์๋ ์์ ๋ ๊ฐ๋จํ ์ํ ๊ณ์ข ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ฉ์๋๋ฅผ ํ์ฉํ ์์์ ๋๋ค.
let bankAccount = {
owner: "John Doe",
balance: 1000,
deposit(amount) {
this.balance += amount;
console.log(amount + "์์ด ์
๊ธ๋์์ต๋๋ค. ํ์ฌ ์์ก: " + this.balance + "์");
},
withdraw(amount) {
if (this.balance >= amount) {
this.balance -= amount;
console.log(amount + "์์ด ์ถ๊ธ๋์์ต๋๋ค. ํ์ฌ ์์ก: " + this.balance + "์");
} else {
console.log("์์ก์ด ๋ถ์กฑํฉ๋๋ค.");
}
}
};
bankAccount.deposit(500); // ๊ฒฐ๊ณผ: "500์์ด ์
๊ธ๋์์ต๋๋ค. ํ์ฌ ์์ก: 1500์"
bankAccount.withdraw(200); // ๊ฒฐ๊ณผ: "200์์ด ์ถ๊ธ๋์์ต๋๋ค. ํ์ฌ ์์ก: 1300์"
์ ์์ ์์๋ deposit
๊ณผ withdraw
๋ฉ์๋๋ฅผ ํตํด ์ํ ๊ณ์ข์ ์
์ถ๊ธ ์์
์ ์ฒ๋ฆฌํ๊ณ , ํ์ฌ ์์ก์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
๊ฒฐ๋ก
JavaScript ๊ฐ์ฒด ๋ฉ์๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ณ ๊ฐ์ฒด์ ๋์์ ์ ์ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์
๋๋ค. ๋ฉ์๋๋ ๊ฐ์ฒด์ ์์ฑ ๊ฐ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, this
ํค์๋๋ฅผ ํ์ฉํด ๊ฐ์ฒด ๋ด์ ๋ค๋ฅธ ์์ฑ์ด๋ ๋ฉ์๋์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ํ JavaScript๋ ๋ค์ํ ๋ด์ฅ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ ๊ณตํด ๋ณต์กํ ์์
๋ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋๋ค.
๊ฐ์ฒด ๋ฉ์๋์ ๊ฐ๋ ์ ์ดํดํ๊ณ , ์ด๋ฅผ ํ์ฉํด ํ๋ก์ ํธ์์ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ