์ฐธ๊ณ : ํฉํ ๋ฆฌ ํจ์๋?
https://ui.toast.com/posts/ko_20160905
์๋ฐ์คํฌ๋ฆฝํธ์์ ํฉํ ๋ฆฌ ํจ์๋ ๋ฌด์์ธ๊ฐ?
ํจ์์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ฐ์ง ์๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋จธ๋ก์ ๋ ๋์๊ฐ ์ ์์ ๊ฒ์ด๋ฉฐ, ์ด ๋ ๊ฐ์ง๊ฐ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์กฐํฉ์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฐ๋ ฅํ ๊ฐ์ฒด ํจ๋ฌ๋ค์์ ์์ํ๋๋ฐ ํ์๋ก ํ๋
ui.toast.com
https://tpgns.github.io/2018/04/08/javaScript-factory-function-with-es6/
ES6+์ ํฉํ ๋ฆฌ ํจ์ - mido
์ด ๊ธ์ Eric Elliott ์ด medium์์ ์ฐ์ฌํ๋ Composing Software ์๋ฆฌ์ฆ๋ฅผ ๋ฒ์ญํ ๊ฒ์ ๋๋ค. [์๋ฌธ๋ณด๊ธฐ] Smoke Art Cubes to Smokeโ—โMattysFlicksโ—โ(CC BY 2.0) ์ฐธ๊ณ : ์ด ๊ธ์ JavaScript ES6+์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
tpgns.github.io
https://fromnowwon.tistory.com/entry/class
[Javascript] ๊ณต์ฅ(ํฉํ ๋ฆฌ) ํจ์ / ์์ฑ์ ํจ์ / ํด๋์ค(class)
๊ธฐ์กด์๋ ํจ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ฉด, ES6(ES2015)๋ถํฐ๋ ํด๋์ค๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ํจ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ถํฐ ํด๋์ค๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊น์ง ๋จ๊ณ๋ณ๋ก ์์๋ณด๋๋ก ํ๊ฒ ๋ค. ๋ชฉ์ฐจ
fromnowwon.tistory.com
0. ์ธ์ ์ฐ๋ฉด ์ข์๊น?
์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๋ก์ง ์์ฒด๋ฅผ ์บก์ํํ๊ณ , ์ธ๋ถ์์๋ ์กฐ๊ธ ๋ ์ฝ๊ณ , ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ํ์ฉํด๋ณผ ๊ฒ
1. ์ ์ฐจ
(1) ํฉํฐ๋ฆฌ ํจ์๋ฅผ ๋ง๋ ๋ค. ํฉํฐ๋ฆฌ ํจ์์ ๋ณธ๋ฌธ์์๋ ์๋์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
(2) ์์ฑ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ํฉํฐ๋ฆฌ ํจ์ ํธ์ถ๋ก ๋ฐ๊พผ๋ค.
2. ์์ ์ฝ๋
//์์ฑ์๋ฅผ ํฉํฐ๋ฆฌ ํจ์๋ก ๋ฐ๊พธ๊ธฐ
class Employee {
constructor(name, typeCode) {
this._name = name;
this._typeCode = typeCode;
}
get name() {
return this._name;
}
get type() {
return Employee.legalTypeCodes[this._typeCode];
}
static get legalTypeCodes() {
return { E: 'Engineer', M: 'Manager', S: 'Salesman' };
}
static createEngineer(name) {
return new Employee(name, 'E');
}
static createManager(name) {
return new Employee(name, 'M');
}
static createSalesman(name) {
return new Employee(name, 'S');
}
}
3. ์ธ์๊น์๋ ์คํ์ผ
(1) ํด๋์ค ์ธ์คํด์ค์ ํ์ ์ฝ๋๊ฐ ํค๊ฐ ๋์ด
์คํํฑ ๋ฉ์๋๋ก ํค๊ฐ์ ๋์ํ๋ ๊ฐ์ธ ํ์ ์ฝ๋๋ช ์ ๋ฐํํ๋ ์คํ์ผ
get type() {
return Employee.legalTypeCodes[this._typeCode];
}
static get legalTypeCodes() {
return { E: 'Engineer', M: 'Manager', S: 'Salesman' };
}
(2) ํฉํฐ๋ฆฌ ํจ์๋ ๋ณด๋ฉด ๋ณผ์๋ก ์ฌ๋ฐ๋ค.
static createEngineer(name) {
return new Employee(name, 'E');
}
static createManager(name) {
return new Employee(name, 'M');
}
static createSalesman(name) {
return new Employee(name, 'S');
}
4. ์คํ๋ถ์ ์ฝ์์ฐฝ
//์ฌ์ฉ๋ถ
const employee = Employee.createEngineer('๋ ์ธ๋ณด์ฐ์ฝ๋');
console.log(employee);
console.log(employee.name);
console.log(employee.type);
'์ฑ ๋ฆฌ๋ทฐ > ๋ฆฌํฉํ ๋ง(์๋ฐ์คํฌ๋ฆฝํธํ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌํฉํฐ๋ง 2ํ] 12.10์ ์ฝ๊ธฐ์ ์์ ์์์ด๋? (0) | 2022.11.28 |
---|---|
[๋ฆฌํฉํฐ๋ง 2ํ] 12.7 ์๋ธํด๋์ค ์ ๊ฑฐํ๊ธฐ (0) | 2022.11.24 |
[๋ฆฌํฉํฐ๋ง 2ํ] 12.6 ํ์ ์ฝ๋๋ฅผ ์๋ธํด๋์ค๋ก ๋ฐ๊พธ๊ธฐ (0) | 2022.11.24 |
[๋ฆฌํฉํฐ๋ง 2ํ] 11.13 ์์ธ๋ฅผ ์ฌ์ ํ์ธ์ผ๋ก ๋ฐ๊พธ๊ธฐ (0) | 2022.11.24 |
[๋ฆฌํฉํฐ๋ง 2ํ] 11.12 ์ค๋ฅ ์ฝ๋๋ฅผ ์์ธ๋ก ๋ฐ๊พธ๊ธฐ (0) | 2022.11.23 |