๋ค์ด๊ฐ๊ธฐ ์์ : ์์ฑ์ํจ์์ ํด๋์ค์ ์ฐจ์ด์
https://sunshineyellow.tistory.com/18?category=1037372
์ ๊ธ์์ ๊ฐ์ฒด์ ์์ฑ์ํจ์๋ฅผ ๊ฐ๋จํ๊ฒ ๊ณต๋ถํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์์ฑ์ํจ์์ ๋ค๋ฅธ ํด๋์ค์ ํน์ด์ ์ ๋ฌด์์ผ๊น?
- ํด๋์ค๋ new ์ฐ์ฐ์ ์์ด๋ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ํด๋์ค๋ extends(ํด๋์ค์ ์์)์ super(superํด๋์ค์ constructor๊ณผ method ํธ์ถ)๋ฅผ ์ธ ์ ์๋ค.
- ํด๋์ค๋ ์๋์ผ๋ก strict mode๋ก ์คํ๋๋ฉฐ ํธ์ด์คํ ์ ๋๋ TDZ๊ฐ ๋ฐ์ํด ์ ์ธ ์ ์ ํธ์ถํ ์ ์๋ค.
ํด๋์ค (class)
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ด๋ค.
let Goodcoder = class {
//constructor
constructor(name, age) {
this.name = name;
this.age = age;
}
//method
coding() {
console.log(`${this.name}, good job!`);
}
};
ํด๋์ค ์์๋ ํด๋์ค๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ ์ ์๋ ์์ฑ์(constructor)๊ฐ ํ ๊ฐ๋ง ๋ค์ด๊ฐ ์ ์๋ค. (์ฌ๋ฌ๊ฐ์ constructor ๋ฉ์๋๊ฐ ๋ค์ด๊ฐ๋ฉด SyntaxError๊ฐ ๋ฐ์ํ๋ค.)
๋ํ method(https://sunshineyellow.tistory.com/17์์๋ ๊ณต๋ถํ๋ค)๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
ํจ์๋ฅผ ์ ์ธํ๊ธฐ ์ํด ํจ์์ ์ธ๋ฌธ๊ณผ ํจ์ํํ์์ ์ฐ๋ฏ, ํด๋์ค๋ฅผ ์ ์ธํ๊ธฐ ์ํด์๋ ํด๋์ค์ ์ธ๋ฌธ๊ณผ ํด๋์คํํ์์ด ์๋ค.
ํด๋์ค์ ์ธ๋ฌธ
class Goodcoder {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
ํด๋์ค์ ์ธ๋ฌธ์ ํจ์์ ์ธ๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ ํด๋์ค๊ฐ ํธ์ด์คํ ๋ ๋ ์ด๊ธฐํ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ธํ๊ธฐ ์ ์ ์ฌ์ฉํ ์ ์๋ค.
const noran = new Goodcoder //ReferenceError
class Goodcoder {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
ํด๋์คํํ์
ํด๋์ค์ ์ธ๋ฌธ๊ณผ ๋์ผํ ํธ์ด์คํ ์ ์ ์ฉ๋ฐ์ ์ ์ธํ๊ธฐ ์ ์ ์ฌ์ฉํ ์ ์๋ค.
unnamed
let Goodcoder = class {
constructor(name, age) {
this.name = name;
this.age = age;
}
};
console.log(Goodcoder.name); //Goodcoder๋ฅผ ์ถ๋ ฅํ๋ค.
named
let Goodcoder = class Goodcoder2 {
constructor(name, age) {
this.name = name;
this.age = age;
}
};
console.log(Goodcoder.name); //Goodcoder2๋ฅผ ์ถ๋ ฅํ๋ค.
name์ ๊ฐ์ง class์ name์ class body({}๋ก ๋ฌถ์ฌ์๋ ๋ถ๋ถ)์ local scope์ ํํด ์ ํจํ๋ค.
์ถ์ฒ : ๋๋ฆผ์ฝ๋ฉ https://www.youtube.com/@dream-coding / MDN https://developer.mozilla.org/ko