ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ



์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด๋ผ๋Š” ๋ง์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  es6์—์„œ ์ถœํ˜„ํ•œ class ๋˜ํ•œ ์ด ๊ธฐ๋ฐ˜ ์œ„์—์„œ ๋ณ€ํ™”๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ธฐ์กด์˜ ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ๋Š” ์–ด๋–ค์‹์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ํ‘œํ˜„ํ–ˆ๋Š”์ง€ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(์ด ๊ธ€์€ https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.)


class.js


1
2
3
4
5
6
7
8
function Cat(name) {
  this.name = name;
}
 
Cat.prototype.speak = function () {
  console.log(this.name + ' makes a noise.');
};
 
cs




์ด์™€๊ฐ™์ด function์œผ๋กœ ์ž‘์„ฑ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด Cat์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ณ  ๊ทธ ํ•จ์ˆ˜(๊ฐ์ฒด)๋ฅผ c๋ผ๋Š” ๋ณ€์ˆ˜์— ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ c ๋ณ€์ˆ˜๋Š” Cat ์ž๋ฃŒํ˜•์— ์žˆ๋Š” speak๋ผ๋Š” ํ•จ์ˆ˜์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ์•„๋งˆ class๋ฅผ ์•„์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด new ์—ฐ์‚ฐ์ž ์–˜๊ธฐ๋ฅผ ๋งŽ์ด ๋“ค์–ด๋ณด์…จ์„ ๊ฒ๋‹ˆ๋‹ค. ์“ฐ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅธ๋ฐ ๊ฑฐ์˜ ๊ธฐ์กด์— ์•Œ๋˜ class๋ž‘ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘์„ ํ•˜๊ณ  ์žˆ์ฃ .


๊ทธ๋Ÿผ es6์— ์ถ”๊ฐ€๋œ class๋กœ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


class.js

1
2
3
4
5
6
7
8
9
class Cat{
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(this.name + ' makes a noise.');
    }
}
 
cs


๋˜‘๊ฐ™์€ ๋™์ž‘์„ ํ•˜๋Š”๋ฐ ๊ธฐ์กด์— class์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ข€ ์•ˆ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋˜๋Š” ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐ”๊ผˆ์Šต๋‹ˆ๋‹ค. 


Constructor์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Constructor (์ƒ์„ฑ์ž)์„น์…˜

constructor ๋ฉ”์†Œ๋“œ๋Š” class ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ํ•œ ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.  "constructor" ๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŠน์ˆ˜ํ•œ ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค ์•ˆ์— ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํด๋ž˜์Šค์— ํ•œ ๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” constructor ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค๋ฉด, SyntaxError ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


class์— ๋Œ€ํ•œ ์–˜๊ธฐ๋ฅผ ํ•  ๋•Œ ๊ผญ ๋‚˜์˜ค๋Š” ๋‹จ์–ด๊ฐ€ ์ƒ์† ์ด๋ผ๋Š” ๋‹จ์–ด์ธ๋ฐ์š” ๊ธฐ์กด์— ์ž‘์„ฑ๋œ ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์ฃ .

์ž๋ฐ”์—์„œ๋Š” extends๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋ฐ์š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.


class.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Animal { 
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}
 
class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}
cs



Animal์ด๋ผ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” Dog ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋™๋ฌผ์€ ์ด๋ฆ„์„ ๊ฐ–์ง€๋งŒ ์šธ์Œ์†Œ๋ฆฌ๋Š” ๋™๋ฌผ๋งˆ๋‹ค ์ƒ์ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์‹ํด๋ž˜์Šค์—์„œ speak() ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ๋งŒ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉ์„ ํ•˜๋ฉด ์ ์–ด๋„ ์ด ์ฝ”๋“œ์—์„œ๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ค‘๋ณตํ•ด์„œ ์ •์˜ํ•ด์•ผํ•˜๋Š” ์ฝ”๋“œ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. class์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง€๊ณ  ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ํšจ์œจ์ ์ด๊ฒ ์ฃ .

๋˜ํ•œ super ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ž์‹ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Animal { 
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}
 
class Dog extends Animal {
  speak() {
    super.speak();
    console.log(this.name + ' barks.');
  }
}
cs

Dog ํด๋ž˜์Šค๋Š” Animal ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•˜์œผ๋ฏ€๋กœ super ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด Animal ํด๋ž˜์Šค์˜ speak ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ๊ฑฐ์˜ ๋™์ผํ•œ ๋ชจ์–‘์„ ํ•˜๊ณ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋” ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ€์‹ค๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ