function ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋ ๋ชฉ์
๊ทธ์ function ์ค๋ธ์ ํธ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ ๋๋ ํด๋์ค ๊ฐ๋ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ function ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ์๋ค.
# ํ๋กํ ํ์
์ ๋ฉ์๋๋ฅผ ์์ฑ X => ๊ทธ์ function ์ค๋ธ์ ํธ ๊ฐ๋
var book = function(){};
# ํ๋กํ ํ์
์ ๋ฉ์๋ ์์ฑ O => ํด๋์ค ๊ฐ๋
var Book = function(){};
Book.prototype.getBook = function(){};
ES6์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ prototype์ ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐํ์ฌ ํด๋์ค ๊ฐ๋ ์ ์ฌ์ฉํ์๋ค. ํ์ง๋ง, ES6๋ถํด classํค์๋๊ฐ ์ถ๊ฐ๋๋ฉด์ classํค์๋๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค๋ฅผ ์์ฑํ ์ ์๋ค.
class
1. class
- class๋ ์ฌ์ค ํน๋ณํ ํจ์์ด๊ธฐ ๋๋ฌธ์ ํจ์๋ฅผ ํจ์ ํํ์๊ณผ ํจ์ ์ ์ธ์ผ๋ก ์ ์ํ ์ ์๋ฏ์ด class๋ฌธ๋ฒ๋ classํํ์๊ณผ class์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ prototype์ ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐํ์ฌ ์์ฑํ๋ค. ES6์์๋ class์ ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ ํด๋์ค๋ฅผ ์์ฑํ ์ ์๋ค. ํ์ง๋ง, ๋ด๋ถ์์๋ prototype์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ด ์ผ์ด๋๋ค.
- ํด๋์ค์ body๋ถ๋ถ์ strict mode์์ ์คํ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์กฐ์ฉํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
1) class ์ ์ธ
class๋ฅผ ์ ์ธํ๊ธฐ ์ํด์ class ํค์๋์ ํจ๊ป ํด๋์ค๋ช ๋ฅผ ์ฌ์ฉํ๋ค.
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
2) class ํํ์
Class ํํ์์ ์ด๋ฆ์ ๊ฐ์ง ์๋ ์๊ณ , ๊ฐ์ง ์์ ์๋ ์๋ค.
์ด๋ฆ์ ๊ฐ์ง class ํํ์์ ์ด๋ฆ์ ํด๋์ค body์ local scope์ ํํด ์ ํจํ๋ค.
# unnamed
let Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
console.log(Rectangle.name);
// ์ถ๋ ฅ: "Rectangle"
# named
let Rectangle = class Rectangle2 {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
console.log(Rectangle.name);
// ์ถ๋ ฅ: "Rectangle2"
'๐ฐ ์ธ์ด > JS - ๋น๊ธฐ๋ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉ์๋ (0) | 2021.05.26 |
---|---|
for()๊ณผ forEach() (0) | 2021.05.24 |
ํจ์ ํ๋กํผํฐ - call, apply/ bind (0) | 2021.05.24 |
์ค๋ธ์ ํธ ํ๋กํ ํ์ (0) | 2021.05.23 |
new ์ฐ์ฐ์ (0) | 2021.05.17 |