๐ŸคŸ
Vanilla-JS
  • TRIPLE-PLUS Adout
  • Babel.JS
  • 01.Vanilla-JS
    • 01. Hello JavaScript
    • 02. ๋ณ€์ˆ˜
      • 02-1.์ง€ํ‚ค๋ฉด ์ข‹์€ ๋ฃฐ(๋” ์ข‹์€ ์Šคํƒ€์ผ์„ ์œ„ํ•ด์„œ)
      • 02-2.์ˆซ์žํ˜•๊ฟ€ํŒ(์ˆ˜์‹ ์ค„์ด๊ธฐ)
    • 03. ์—ฐ์‚ฐ์ž
    • 04. ์กฐ๊ฑด๋ฌธ
    • 05. ํ•จ์ˆ˜
      • this์˜ ์˜๋ฏธ 6๊ฐœ ์ด์ •๋ฆฌ
      • event listener์™€ constructor
      • 05-1. return:๋Œ๋ ค์ฃผ๋‹ค
      • 05-2. ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜
      • 05-3. Arrow function
    • 06. ๊ฐ์ฒด
    • 07. ๋ฐฐ์—ด
      • 07-1. ๋ฐฐ์—ด ์•ˆ์— ๋ฐฐ์—ด(2์ฐจ ๋ฐฐ์—ด)
      • 07-2. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(forEach)
      • 07-3. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(sort)
      • 07-4. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(map)
      • 07-5. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(indexOf)
      • 07-6. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(filter)
      • 07-7. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(splice, slice)
      • 07-8. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(shift, unshift, pop, push)
      • 07-9. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(concat, join)
      • 07-10. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(reduce)
      • 07-10. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(reduce)2
    • 08. ๋ฐ˜๋ณต๋ฌธ
    • 09. Class์™€ ํ”„๋กœํ† ํƒ€์ž…
      • 09-1. ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค - ์ƒ์„ฑ์ž
      • 09-2. ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค - ์ƒ์„ฑ์ž ์ƒ์†ํ•˜๊ธฐ
      • Class & Constructor & Method
      • super
      • Static Method
      • Class Getter, Setter
      • Information Hiding
      • Inheritance & Polymorphism
      • Overriding
      • Abstract Class
      • Interface
    • Math ์ •๋ฆฌ
    • String ์ •๋ฆฌ
    • Array์ •๋ฆฌ
    • Date ์ •๋ฆฌ
      • D-day ๊ตฌํ•˜๊ธฐ
  • 02.Vanilla-JS
    • 01.์‚ผํ•ญ์—ฐ์‚ฐ์ž
    • 02. Truthy and Falsy
    • 03. ๋‹จ์ถ• ํ‰๊ฐ€ ๋…ผ๋ฆฌ ๊ณ„์‚ฐ๋ฒ•
    • 04. ํ•จ์ˆ˜ ์—…๊ทธ๋ ˆ์ด๋“œ (default parameter/arguments)
    • 05. ์กฐ๊ฑด๋ฌธ ๋” ์Šค๋งˆํŠธํ•˜๊ฒŒ ์“ฐ๊ธฐ
    • 06. ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น (๊ตฌ์กฐ๋ถ„ํ•ด) ๋ฌธ๋ฒ•
    • 07. spread ์™€ rest
      • ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ์˜ rest(params)
      • ํ•จ์ˆ˜ ์ธ์ž์—์„œ์˜ spread
    • 08. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Scope ์— ๋Œ€ํ•œ ์ดํ•ด
    • 09. Hoisting ์ดํ•ดํ•˜๊ธฐ
    • 10. Native DOM ์„ ํƒ
  • 03.๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • 01. fetch, then, catch[Promise] ์ดํ•ดํ•˜๊ธฐ
    • 02. ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋Š” Promise ๊ฐ์ฒด
    • 03. async/await
    • 04. Promise all, Promise.race
  • REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ
    • mongodb Atlas
    • mongodb Atlas(DB)์— ์ ‘๊ทผํ•˜๋ ค๋ฉด
    • URL ์ด๋ฆ„์ง“๊ธฐ ๊ด€์Šต
    • Database์— ์ž๋ฃŒ ์ €์žฅํ•˜๋Š” ๋ฒ•
    • ๊ฒŒ์‹œ๋ฌผ๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ์•„ ์ €์žฅํ•˜๊ธฐ
    • ๊ฒŒ์‹œ๋ฌผ๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ์•„ ์ €์žฅํ•˜๊ธฐ2
  • JQUERY + SCRIPT ์œ ์šฉํ•œ ์ฝ”๋“œ ์ •๋ฆฌ
  • Practice(์‹ค์Šต)
    • ์นด์šดํ„ฐ ๋งŒ๋“ค๊ธฐ
    • reduce
    • ๋ฐ์ดํ„ฐ ์ž๋ฃŒํ˜• ํ™œ์šฉํ•˜๊ธฐ1
    • ๋ฐ์ดํ„ฐ ์ž๋ฃŒํ˜• ํ™œ์šฉํ•˜๊ธฐ2
    • ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)1
    • ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)2
    • REST API
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ1
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ2
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ3
    • ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น
    • rest + spread(์‘์šฉ)1
    • rest + spread(์‘์šฉ)2
    • rest + spread(์‘์šฉ)3
    • ๋ฐ˜๋ณต๋ฌธ ๋‚ด์žฅํ•จ์ˆ˜(์‘์šฉ)1
    • ํ•จ์ˆ˜ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)1
    • ์„œ๋ฒ„์™€์˜ ํ†ต์‹ 1
    • ์„œ๋ฒ„์™€์˜ ํ†ต์‹ 2
    • new Promise(์‘์šฉ)2
    • new Promise(์‘์šฉ)3
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ์œ„์ž„ ํ•ต์‹ฌ ์ •๋ฆฌ
Powered by GitBook
On this page
  • Class
  • Constructor(์ƒ์„ฑ์ž)
  • Instance variable(์ธํ„ฐํŽ˜์ด์Šค ๋ณ€์ˆ˜)
  • Method

Was this helpful?

  1. 01.Vanilla-JS
  2. 09. Class์™€ ํ”„๋กœํ† ํƒ€์ž…

Class & Constructor & Method

Previous09-2. ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค - ์ƒ์„ฑ์ž ์ƒ์†ํ•˜๊ธฐNextsuper

Last updated 4 years ago

Was this helpful?

Class

class Food {

}

export default Food;

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ์„ค๊ณ„๋„๋‹ค. ํด๋ž˜์Šค์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐ์–ด๋‚ธ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํด๋ž˜์Šค ์„ ์–ธ์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ค. ์ฐธ๊ณ ๋กœ ํด๋ž˜์Šค ์„ ์–ธ์€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. (๋งจ ๋งˆ์ง€๋ง‰ ๋ผ์ธ export default Animal์€ Animal.js ํŒŒ์ผ์—์„œ Animal ํด๋ž˜์Šค๋ฅผ ์™ธ๋ถ€๋กœ exportํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋‹ค. ํด๋ž˜์Šค ์™ธ์—๋„ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜ ๋“ฑ์„ exportํ•  ๋•Œ๋„ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)

ํด๋ž˜์Šค ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋์ง€๋งŒ, ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ์ง„์งœ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰๊ฐ์ฒด๋‹ค. ์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์ƒˆ๋กœ์šด ๊ฐ์ฒด์ง€ํ–ฅ ๋ชจ๋ธ์ด ๋„์ž…๋œ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋ฌธ๋ฒ•์ ์œผ๋กœ๋งŒ ํด๋ž˜์Šค๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์ฝ˜ํ…์ŠคํŠธ์—์„œ hoisting๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ๋งŒ ๋นผ๋ฉด ์œ„ ์ฝ”๋“œ๋Š” function Animal() { }๊ณผ ๊ฐ™๋‹ค.

// index.js
import Food from './Food ';

let anim = new Food();

๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ Animal ํด๋ž˜์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์šฐ์„  Animal ํด๋ž˜์Šค๋ฅผ importํ•ด์•ผ ํ•œ๋‹ค. (์•ž์„œ export default Animal ๋ผ์ธ์„ ์ž‘์„ฑํ•œ ์ด์œ ๋‹ค.) anim ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด Animal์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ anim์€ Animal ํด๋ž˜์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜(Reference variable)์ด๋ฉฐ, ์ธ์Šคํ„ด์Šค(Instance)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํด๋ž˜์Šค๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ์ด์šฉํ•ด ์ธ์Šคํ„ด์Šค๋ผ๋Š” ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

Constructor(์ƒ์„ฑ์ž)

// Animal.js
class Food {
    constructor(name) {
    
    }
}

export default Food ;

ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ constructor๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. constructor๋Š” new Animal(); ๋ช…๋ น์„ ํ†ตํ•ด ์‹คํ–‰๋˜์–ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋˜ํ•œ constructor์—๋Š” name์ฒ˜๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‘˜ ์ˆ˜๋„ ์žˆ๋‹ค. ๋งŒ์•ฝ constructor๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋น„์–ด์žˆ๋Š” default constructor๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๊ตณ์ด ๋นˆ constructor๋ฅผ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†๋‹ค.

Instance variable(์ธํ„ฐํŽ˜์ด์Šค ๋ณ€์ˆ˜)

// Food .js
class Food {
    constructor(name) {
        this.name = name;
    }
}

export default Food;

ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ํ”„๋กœํผํ‹ฐ๋Š” constructor ์•ˆ์— ์„ ์–ธํ•œ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ์ด๋ฅผ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(Instance variable)๋ผ๊ณ  ๋ถ€๋ฅด์ง€๋งŒ, ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ ํด๋ž˜์Šค๋Š” ์‚ฌ์‹ค ํ•จ์ˆ˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— this.name์€ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ํ”„๋กœํผํ‹ฐ(Property)๋‹ค.

// index.js
import Food from './Food ';

let anim = new Food ('Jake');

์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ๋‹ค. Food ์ธ์Šคํ„ด์Šค์˜ ํ”„๋กœํผํ‹ฐ name์˜ ๊ฐ’์€ 'Jakeโ€™๋‹ค.

Method

// Animal.js
class Food {
    constructor(name) {
        this.name = name;
    }
    
    getName() {
        return this.name;
    }
}

export default Food;

๋ฉ”์†Œ๋“œ๋Š” ํ•จ์ˆ˜์™€ ๋น„์Šทํ•˜๋ฉฐ, ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ๋™์ž‘์„ ์ •์˜ํ•œ๋‹ค. getName() ๋ฉ”์†Œ๋“œ๋Š” Animal ํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ์ธ this.name์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

// index.js
import Animal from './Animal';

let anim = new Animal('Jake');

console.log(anim.getName()); // 'Jake'

ํ˜ธ์ถœ ์—ญ์‹œ ์ง๊ด€์ ์ด๋‹ค.

EX1) ์˜ˆ์‹œ

class Food {
  constructor(name) {
    this.name = name;
    this.brands = [];
  }
  addBrand(brand) {
    this.brands.push(brand);
  }
  print() {
    console.log(`${this.name}์„ ํŒŒ๋Š” ์Œ์‹์ ๋“ค:`);
    console.log(this.brands.join(", "));
  }
}

const pizza = new Food('ํ”ผ์ž');
pizza.addBrand('ํ”ผ์žํ—›');
pizza.addBrand('๋„๋ฏธ๋…ธ ํ”ผ์ž');


const chicken = new Food('์น˜ํ‚จ');
chicken.addBrand('๊ตฝ๋„ค์น˜');
chicken.addBrand('BBQ');

pizza.print();
chicken.print();
// ๊ฒฐ๊ณผ)

ํ”ผ์ž์„ ํŒŒ๋Š” ์Œ์‹์ ๋“ค: 
ํ”ผ์žํ—›, ๋„๋ฏธ๋…ธ ํ”ผ์ž 
์น˜ํ‚จ์„ ํŒŒ๋Š” ์Œ์‹์ ๋“ค: 
๊ตฝ๋„ค์น˜, BBQ 
hoisting