์ค๋์ ์๋ฐ์คํฌ๋ฆฝ์ 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] ๋ฐ์ดํฐ ํ์ , ํ์ ๋ณํ, ๋จ์ถ ํ๊ฐ etc. (0) | 2024.07.30 |
---|---|
[JS] ์๋ณ์, ํธ์ด์คํ , ํค์๋(var, let, const) etc. (0) | 2024.07.29 |
[JS] ์๋ฐ์คํฌ๋ฆฝํธ๋ (0) | 2024.07.06 |
[JS] for...of ๋ช ๋ น๋ฌธ (2) | 2023.12.04 |
[JS] parseInt() ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2023.11.30 |