Responsive Advertisement

JavaScript Object Methods: ๊ฐ์ฒด ๋ฉ”์„œ๋“œ ํ™œ์šฉ๋ฒ•

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๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๊ฐ์ฒด ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ด ๋ณต์žกํ•œ ์ž‘์—…๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ฉ”์„œ๋“œ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ํ™œ์šฉํ•ด ํ”„๋กœ์ ํŠธ์—์„œ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ