Frontend ๐Ÿ“š/JavaScript

[JS] Constructor(์ƒ์„ฑ์ž)๋ž€?

leejaejae 2023. 11. 28. 16:50

์˜ค๋Š˜์€ ์ž๋ฐ”์Šคํฌ๋ฆฝ์˜ Constructor ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž.

Constructor ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ๋กœ ์‰ฝ๊ฒŒ ๋งํ•ด ์ƒ์„ฑ์ž์ด๋‹ค.
ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค์—์„œ __init__์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

๊ตฌ๋ฌธ

constructor() { ... }
constructor(argument0) { ... }
constructor(argument0, argument1) { ... }
constructor(argument0, argument1, ... , argumentN) { ... }

 

์„ค๋ช…

Constructor๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋ณด๋‹ค ์•ž์„  ์‹œ์ ์ธ, ์ธ์Šคํ„ดํŠธ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

class Person {
  constructor(name) {
    this.name = name;
  }

  introduce() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

const jaejae = new Person("jaejae");

jaejae.introduce();

ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œํ•œ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ƒ์†ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค์ผ ๋•Œ์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ๋นˆ ๋ฉ”์„œ๋“œ์ด๋‹ค.

// ์ƒ์†X, ๊ธฐ๋ณธ ์ƒ์„ฑ์ž
constructor() {}

๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ์ž์‹ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค.

// ์ƒ์†O, ๊ธฐ๋ณธ ์ƒ์„ฑ์ž
constructor(...args) {
  super(...args);
}

 

 

์‚ฌ์šฉ ์ด์œ 

constuctor๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€ ํ˜น์€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์ƒ์†ํ•œ ๊ฒฝ์šฐ, ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด constructor๋กœ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”๋œ ๊ฐ์ฒด๋Š” this.<๋ณ€์ˆ˜> ์˜ ํ˜•ํƒœ๋กœ ์–ด๋Š ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€๋ผ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Constructor ํ™œ์šฉ ์˜ˆ์‹œ: super() ๋ฉ”์†Œ๋“œ

๊ธฐ์กด์— ์ž‘์„ฑ๋œ ํด๋ž˜์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ผ๋ถ€ ๊ธฐ๋Šฅ๋งŒ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›๊ฒŒ ๋˜๋ฉฐ ์ด๋•Œ์—๋Š” ๋ฐ˜๋“œ์‹œ super() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค. (super() ๋ฉ”์†Œ๋“œ๋Š” ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)

class Person {
  constructor(name) {
    this.age = 0;
    this.name = name;
  }
}

class Lab extends Person {
  constructor(name, numOfPeople) {
    super(name);  // ๋ถ€๋ชจํด๋ž˜์Šค์ธ Person์„ ์ƒ์† ๋ฐ›์€ Lab ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ์œ„ํ•ด super()๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
    this.numOfPeople = numOfPeople;
  }
}

let dbLab = new Lab("์Šน์žฌ", 10);
Console.log(rabbit.name); // ์Šน์žฌ
Console.log(rabbit.numOfPeople); // 10

 

์ฐธ๊ณ 

JS class Contructor๋ฅผ ์•Œ์•„๋ณด์ž

constructor - JavaScript | MDN

 

 

 

'Frontend ๐Ÿ“š > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€  (0) 2024.07.06
[JS] for...of ๋ช…๋ น๋ฌธ  (2) 2023.12.04
[JS] parseInt() ์‚ฌ์šฉ ๋ฐฉ๋ฒ•  (0) 2023.11.30