[JAYโŒจ๏ธJS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ธฐ

2023. 4. 23. 02:31ใ†javascript

๋ฐ˜์‘ํ˜•

 1๏ธโƒฃ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP)์ด๋ž€ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ถ€ํ’ˆ๊ณผ ๊ฐ™์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก .
  • ์ถ”์ƒํ™” ์ƒ์† ๋‹คํ˜•์„ฑ ์บก์Šํ™” 4๊ฐ€์ง€์˜ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ์„ค๊ณ„์˜ ์ด์ ๋“ค์„ ๊ฐ€์žฅ ์ž˜ ์‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ ๊ฐ์ฒด๋“ค์˜ ์—ญํ• ์„ ์ •์˜ํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋งž์ถฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ์  ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ์ง๊ด€์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ˜๋ณต ์—†์ด ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•œ ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์š”์†Œ๋กœ class๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ๊ฐ์ฒด๋ฆฌํ„ฐ๋Ÿด ํ”„๋กœํ† ํƒ€์ž… ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์˜ˆ์ œ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ๋Šฅ์„ ๋น„๊ตํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

// 1. jay ๊ฐ์ฒด ์ƒ์„ฑ.
const jay = {
    name: '๐Ÿ™‹๐Ÿป‍โ™€๏ธ Jay',
    // cat์˜  Happiness๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” care ํ•จ์ˆ˜ ์„ ์–ธ.
    care: function (cat) {
        cat.upLift();
    }
}

// 2. cat ๊ฐ์ฒด ์ƒ์„ฑ
const cat = {
    name: '๐Ÿˆ‍โฌ› ๊ฐ„์žฅ์ด',
    happiness: 30,
    // cat์˜ Happiness๋ฅผ 10 ์ฆ๊ฐ€์‹œํ‚ค๋Š” upLift ํ•จ์ˆ˜ ์„ ์–ธ.
    upLift: function () {
        this.happiness += 10;
        if (this.happiness < 50) {
            console.log(`๐Ÿ’– ${this.name}์™€ ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์ฃผ์„ธ์š”...๐Ÿ˜ฟ`)
        } else if (this.happiness < 100) {
            console.log(`๐Ÿ’– ${this.name}์˜ ํ˜„์žฌ ๋งŒ์กฑ๋„๋Š” ${this.happiness}% ์ž…๋‹ˆ๋‹ค.`)
        } else {
            this.happiness = 100;
            console.log(`๐Ÿ’– ${this.name}๋Š” ์ง€๊ธˆ ์ตœ๊ณ ๋กœ ํ–‰๋ณตํ•ด์š”!`)
        }
    }
}

// 3. care ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ cat ๊ฐ์ฒด๋ฅผ arguments๋กœ ์ „๋‹ฌ.
jay.care(cat);
jay.care(cat);
jay.care(cat);
.
.
.

// 4. Console ๋ฐ˜ํ™˜ ํ™”๋ฉด.
๐Ÿ’– ๐Ÿˆ‍โฌ› ๊ฐ„์žฅ์ด์™€ ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์ฃผ์„ธ์š”...๐Ÿ˜ฟ
๐Ÿ’– ๐Ÿˆ‍โฌ› ๊ฐ„์žฅ์ด์˜ ํ˜„์žฌ ๋งŒ์กฑ๋„๋Š” 50% ์ž…๋‹ˆ๋‹ค.
.
.
.
๐Ÿ’– ๐Ÿˆ‍โฌ› ๊ฐ„์žฅ์ด๋Š” ์ง€๊ธˆ ์ตœ๊ณ ๋กœ ํ–‰๋ณตํ•ด์š”!

 

 

 

 2๏ธโƒฃ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ Constructor ์™€ ์ธ์Šคํ„ด์Šค Instance

 

์ƒ์„ฑ์ž ํ•จ์ˆ˜

  • ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜. Return ๊ฐ’์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ํฌ์ธํŠธ!
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์žฅ์ ์€ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๊ฐ™์€ property์™€ Method๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ.
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค

 

์ธ์Šคํ„ด์Šค

  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜๋˜์–ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค(instance) ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ์ฒด๊ฐ€ ํŠน์ • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋ฉด instanceof ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉ.
  • ์›๋ž˜ ํ•จ์ˆ˜ ์•ˆ์—์„œ์˜ this๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ
    ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์•ž์— new ์—ฐ์‚ฐ์ž๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด ํ•จ์ˆ˜ ์•ˆ์˜ this๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ๊ฐ์ฒด ์ฆ‰, ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐ.
// 1. ์ƒ์„ฑ์ž ํ•จ์ˆ˜ Factory ์ƒ์„ฑ
function Factory(name) { 
    this.name = name;
    console.log(`์‚๋ฆฌ๋น„๋ฆฌ. ์ œ ์ด๋ฆ„์€ ${this.name}์ž…๋‹ˆ๋‹ค.`);
}

// 2. instance ์ƒ์„ฑ
let jayBot = new Factory('๐Ÿค–JAY'); // = ์‚๋ฆฌ๋น„๋ฆฌ. ์ œ ์ด๋ฆ„์€ ๐Ÿค–JAY์ž…๋‹ˆ๋‹ค.โ€ˆ

// 3. instanceof ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์ธ์ง€ ํ™•์ธ
jayBot instanceof Factory; // = true

 

 

 

 

 3๏ธโƒฃ ํ”„๋กœํ† ํƒ€์ž… (prototype)
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ค๊ณ„์—์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
    ์ƒ์†์€ ๊ฐ์ฒด์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜.
  • JavaScript์—์„œ๋Š” ๊ฐ์ฒด์˜ ์ƒ์†์„ ์œ„ํ•ด prototype์„ ์‚ฌ์šฉ.
  • ์œ„(2) ์˜ˆ์ œ์™€ ๊ฐ™์ด Object literal์„ ํ™œ์šฉํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ƒ์‚ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, instance๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ํ•จ์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์œผ๋กœ ๋ฐœ์ƒ๋˜๋Š” ๋‚ญ๋น„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๊ฐ์ฒด์˜ ํ•จ์ˆ˜๋ฅผ ์ƒ์†์‹œํ‚ค๋Š” prototype ์†์„ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” instance๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ˆจ๊ฒจ์ง„ ์†์„ฑ์ธ Prototype์ด ์ถ”๊ฐ€๋˜์–ด ์—ฐ๊ฒฐ๋œ๋‹ค.
  • ์ฆ‰, ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด prototype์ด ๋˜๋ฉฐ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์„œ ์ž์‹์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด instance ์— ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ช….prototype ์„ ํ†ตํ•ด์„œ, instance ๋Š” ์ธ์Šคํ„ด์Šค๋ช….__proto__ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ prototype์„ ์ œ์–ดํ•œ๋‹ค.
  • ์•„๋ž˜ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ํ”„๋กœํ† ํƒ€์ž… ๋กœ์ง์„ ๋น„๊ตํ•ด์„œ ํ™•์ธํ•˜๋ฉด ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

// 1. GetProtoLv ๊ฐ์ฒด ์ƒ์„ฑ
const GetProtoLv = {
    name: 'JAY',
    job: 'Frontend Developer',
    level: 1,
    levelUp: function () {
        this.level++;
        console.log(`๐ŸŽ‰ ${this.name} ๋ ˆ๋ฒจ${this.level} ๋‹ฌ์„ฑ!`);
    }
};

// 2. GetProtoLv์˜ ์†์„ฑ์„ ์ƒ์†๋ฐ›์„ ๋นˆ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ getLearn() ์ƒ์„ฑ
function getLearn(name) {
    this.name = name
}

// 3. Object.create() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด GetProtoLv๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์†์„ฑ์„ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
getLearn.prototype = Object.create(GetProtoLv);
getLearn.prototype.code = function (lang) {
    console.log(`๐Ÿ“ ${this.name}๋Š” ์ง€๊ธˆ ${lang} ๊ณต๋ถ€ ์ค‘...`);
    this.levelUp();
};
getLearn.prototype.read = function (book) {
    console.log(`๐Ÿ“š ${this.name}๋Š” ์ง€๊ธˆ ${book} ์ฝ๋Š” ์ค‘...`);
    this.levelUp();
};

// 4. Instance ์ƒ์„ฑ
const paul = new getLearn('Paul')
paul.code('React')
// ๐Ÿ“ Paul๋Š” ์ง€๊ธˆ React ๊ณต๋ถ€ ์ค‘... ๐ŸŽ‰ Paul ๋ ˆ๋ฒจ2 ๋‹ฌ์„ฑ!
paul.read('Modern JavaScript')
// ๐Ÿ“š Paul๋Š” ์ง€๊ธˆ Modern JavaScript ์ฝ๋Š” ์ค‘... ๐ŸŽ‰ Paul ๋ ˆ๋ฒจ3 ๋‹ฌ์„ฑ!

 

Instance Paul ์ƒ์„ฑ ๋กœ์ง
Instance Paul ์ƒ์„ฑ ๋กœ์ง

 

 

 

4๏ธโƒฃ Class
  • class + ์ด๋ฆ„ + { constructor ... } ๋กœ ๊ตฌ์„ฑ.
  • 2016๋…„ ES6 ๋ถ€ํ„ฐ ๋„์ž…๋œ instance๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜.
  • ๊ฐ์ฒด๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ์ƒ์‚ฐ ๋„๋ฉด ํ˜น์€ ์ฒญ์‚ฌ์ง„์ด๋ž€ ํ‘œํ˜„์„ ์ž์ฃผ ์‚ฌ์šฉ.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž… ์ƒ์„ฑ(๊ฐ์ฒด ์ƒ์„ฑ) ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฅธ ์–ธ์–ด์˜ ํด๋ž˜์Šค ๋ฌธ๋ฒ•์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์ค€ ๊ฒƒ.
  • ์ด์ฒ˜๋Ÿผ ๋‚ด๋ถ€์ ์ธ ๋™์ž‘์€ ๋™์ผํ•˜์ง€๋งŒ ๋” ๋ณด๊ธฐ ์ข‹๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ์„ ๋œ ๋ฌธ๋ฒ•์„ ์Šˆ๊ฐ€์‹ ํ…์Šค (Syntactic sugar) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • class์˜ ์ž์„ธํ•œ ๊ธฐ๋Šฅ๊ณผ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ๊ธฐ์ˆ ํ•  ์˜ˆ์ •!
    ์•„๋ž˜ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ๋กœ์ง์„ ๋น„๊ตํ•ด์„œ ํ™•์ธํ•˜๋ฉด class์˜ ๊ตฌ์กฐ๋Š” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ
    ๊ธฐ์กด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ”„๋กœํ† ํƒ€์ž…(3) ํŒจํ„ด๋ณด๋‹ค ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•œ ๋กœ์ง์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

class GetClassLv {
    constructor(name) {
        this.name = name;
        this.job = 'Frontend Developer';
        this.level = 1;
    }
    code(lang) {
        if (typeof lang !== 'string') {
            throw new Error('Please pass in a string')
        }
        console.log(`๐Ÿ“ ${this.name}๋Š” ์ง€๊ธˆ ${lang} ๊ณต๋ถ€ ์ค‘...`);
        this.levelUp()
    }
    read(book) {
        if (typeof book !== 'string') {
            throw new Error('Please pass in a string')
        }
        console.log(`๐Ÿ“š ${this.name}๋Š” ์ง€๊ธˆ ${book} ์ฝ๋Š” ์ค‘...`);
        this.levelUp()
    }
    levelUp() {
        this.level += 1;
        console.log(`๐ŸŽ‰ ${this.name} ๋ ˆ๋ฒจ${this.level} ๋‹ฌ์„ฑ!`);
    }
}

// instance ์ƒ์„ฑ
const jay = new GetClassLv('JAY');

// instance method ํ˜ธ์ถœ
jay.code('JavaScript')
jay.read('Modern JavaScript')
// = ๐Ÿ“ JAY๋Š” ์ง€๊ธˆ JavaScript ๊ณต๋ถ€ ์ค‘... ๐ŸŽ‰ JAY ๋ ˆ๋ฒจ2 ๋‹ฌ์„ฑ!
// = ๐Ÿ“š JAY๋Š” ์ง€๊ธˆ core JavaScript ์ฝ๋Š” ์ค‘... ๐ŸŽ‰ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป JAY ๋ ˆ๋ฒจ3 ๋‹ฌ์„ฑ!

Instance Jay ์ƒ์„ฑ ๋กœ์ง
Instance Jay ์ƒ์„ฑ ๋กœ์ง

 

 

5๏ธโƒฃ Prototype ๊ณผ Class ์ฝ”๋“œ ๋น„๊ต

 

 

 

Prototype ๊ณผ Class ์ฝ”๋“œ ๋น„๊ต
Prototype ๊ณผ Class ์ฝ”๋“œ ๋น„๊ต

 

 

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์š”์•ฝ
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP)์ด๋ž€ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ถ€ํ’ˆ๊ณผ ๊ฐ™์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก .
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜. ๋ฆฌํ„ด ๊ฐ’์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ํฌ์ธํŠธ!
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด prototype์ด ๋˜๋ฉฐ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์„œ ์ž์‹์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด instance ์— ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 2016๋…„ ES6 ๋ถ€ํ„ฐ ๋„์ž…๋œ instance๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜ Class๋Š” ๊ธฐ์กด JavaScript์˜ ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž… ์ƒ์„ฑ(๊ฐ์ฒด ์ƒ์„ฑ) ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฅธ ์–ธ์–ด์˜ Class ๋ฌธ๋ฒ•์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์ค€ ๊ฒƒ. constructor() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•