2022. 5. 20. 19:14ใ๊ฐ๋ฐ/๊ฐ์ํ๊ธฐ
https://programmers.co.kr/learn/courses/13885
[์คํฐ๋/15๊ธฐ] ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ (feat. VanillaJS)
๐ ์์ฝ์ง๋ง 15๊ธฐ๋ ๋ง๊ฐ๋์์ด์. 16๊ธฐ ์คํ ์๋ฆผ ์ ์ฒญํ๊ณ , ์ต์ ๊ฐ์ ์๊ฐํ์ธ์! ์คํ ์๋ฆผ ์ ์ฒญ ๐จ ์คํฐ๋ ์ฐธ์ฌ ๋น์ฉ ์ ์ก ์ง์ ๋ฐ์! ์ํฉํธ์บ ํผ์ค ์ง์ ์กฐ๊ฑด(๋ฏธ์ทจ์ ๊ธฐ๊ฐ, ์๋ ๊ธฐ์ค ๋ฑ)์
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค์์ ์งํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํฐ๋์ ์ฐธ์ฌํ๊ฒ ๋์๋ค.
ํด๋น ์คํฐ๋๋ ๋ฆฌ๋๋ถ๋ค์ด ๊ณผ์ ๋ฅผ ๋ด์ฃผ์๋ฉด 1์ฃผ์ผ ๋์ ๊ทธ ๊ณผ์ ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ ์์ ๋กญ๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ฉด์ ํจ๊ป ์ฑ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค.
๋จผ์ ์ฒซ ์ธ์
์ ํ๊ธฐ ์ ์ ์ฌ์ ๊ณผ์ ๋ฅผ ํ์๋๋ฐ, ํด๋ก์ , ํธ์ด์คํ
, this๋ฐ์ธ๋ฉ ๋ฑ ์ค์ํ ๊ฐ๋
๋ค ์์ฃผ๋ก ๋ฌธ์ ๊ฐ ๋์๊ณ ์์งํ ๋ํํ
๋ ์กฐ๊ธ ๋์ด๋๊ฐ ์์๋ค. ๊ทธ๋ฅ ํ์์ผ๋ฉด ๋ฐํ์ ์ ๋ ํ์ ๊ฒ ๊ฐ์๋ฐ vscode ์ผ๋๊ณ ์ฝ๋๋ฅผ ์ง์ ๋๋ ค๋ณด๋ฉด์ ์ ์ด๋ ๊ฒ ๋์ฌ๊น ๊ณ ๋ฏผํด๊ฐ๋ฉด์ ๋ต๋ณ์ ์ ์ผ๋ ๊ทธ๋๋ ๋ชจ๋ ๋ฌธ์ ์ ๋ต๋ณ์ ํ ์ ์์๋ค.
๊ทธ๋ ๊ฒ OT ํ์์ 1์ฃผ์ฐจ ์ธ์
์ด ๋๋๊ณ ๋๋์ด ๊ณผ์ ๋ฅผ ๋ฐ์๋ค! ๐
[1์ฃผ ์ฐจ ๊ณผ์ ]
- TodoList๋ผ๋ ์ด๋ฆ์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํฉ๋๋ค.
- function style์ ๋ฌธ๋ฒ, class style์ ๋ฌธ๋ฒ ์ด๋ ๊ฒ์ ์ฌ์ฉํด๋ ์ข์ต๋๋ค. ... ํ๋ต ...
๋๋ ์ ์ง ํจ์๋ก ํด๋์ค์ ์ญํ ์ ํ๋๋ก ํ๋๊ฒ ์์ง์ ์กฐ๊ธ ์ด์ํ ๋๋์ด ๋ค์ด์ class style์ ๋ฌธ๋ฒ์ ์ ํํ๋คโจ
๊ทธ๋ ๊ฒ ํด๋์คํ์ผ๋ก TodoList ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋๋ฐ
class TodoList {
constructor(data) {
validateData(data); // => ํ ๋นํ ๋๋ง๋ค ๋งค๋ฒ ํจ์๋ฅผ ์คํํด์ค์ผ ํ๋ค ๐ฅ
this.data = data;
}
// ์ปดํฌ๋ํธ ๊ตฌํ ๐ป
}
const validateData = (data) => {
// ์ ํจ์ฑ ๊ฒ์ฌ โ
};
์ด๋ ๊ฒ PR ์ฌ๋ฆฌ๊ณ ๋์ ์๋ฌด๋ฆฌ ์๊ฐํด๋ constructor์์ ์ ํจ์ฑ ๊ฒ์ฌํ ๋ ์ธ๋ถ ํจ์๋ฅผ ์ฐ๋ ๊ฒ ๋๋ฌด ๋ง์์ ๋ค์ง ์์๋ค. ๊ทธ๋์ ๊ด์ค๋ ๊ตฌ๊ธ๋งํ๋ค๊ฐ ๋ค๋ฆ๊ฒ ์๊ฐ์ด ๋์ getter, setter๋ฅผ ๋ฑ ์ฐ๋๋ฐ..
class TodoList {
constructor(data) {
this.data = data; // => ๊ทธ๋ฅ ์์์ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ๋๋ค โจ like a ๋งค์ง
}
set data(data) {
// ์ ํจ์ฑ ๊ฒ์ฌ โ
this._data = data;
}
// ์ปดํฌ๋ํธ ๊ตฌํ ๐ป
}
์ฝ๋๊ฐ ๊ฑฐ์ง๋ง๊ฐ์ด ๊น๋ํด์ง๋ ๋ง๋ฒ ๐งโ๏ธ getter, setter์ ์กด์ฌ๋ฅผ ๋ชฐ๋๋ ๊ฒ๋ ์๋๊ณ ์ฌ์ง์ด Java ํํ ํ๋ฉด์ ์ฃผ๊ตฌ์ฅ์ฐฝ ์ผ๋ ๊ฑด๋ฐ, JS์์๋ ์ด๋ ๊ฒ๊น์ง ์ฒ ์ ํ๊ฒ ์ธ๋ฉดํ ์ ์์๋ ์ถ๋ค. ๋ง์ ์ด๋ฒ์ ์ ์ฉ์์ผ๋ณด๋๊น "์ ๋ง๋ค, ์ด๋ ๊ฒ ์ฐ๋ ๊ฑฐ์์ง! "ํ๋ ๋ง์๊ณผ ๋์์, ์์ผ์ค๋ฝ๊ฒ setter, getter๊ฐ ๋์ํ๋ ๊ฑฐ ์์ฒด๊ฐ ์ฌ๋ฐ๊ณ ์ ๊ธฐํ๋ค.
ํ์คํ ์ฑ
์ผ๋ก ๊ณต๋ถํ ๋์๋ ๋๋์ด ๋ค๋ฅธ ๊ฒ, ์ด๋ฐ ์์ผ๋ก ๋ฏธ์
์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด ๋จธ๋ฆฟ์์ ์ง์์ผ๋ก๋ง ์์๋ ๊ฐ๋
๋ค์ ์ด๋ฆฌ์ ๋ฆฌ ์กฐ๋ฆฝํด๋ณด๋ฉด์ ์ง์ ์ผ๋ก ์ฒดํ๋๋ ๋๋์ ๋ฐ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ํ์ ํ๋๊ฒ ์ค์ํ๋จ ๊ฒ์ ์๊ณ ๋ ์์ง๋ง, ์ ์ง ํผ์ ํ๋ ํ๋ก์ ํธ๋ ์ต์ํ ๊ฒ๋ง ๊ณ์ ์ฐ๊ฒ ๋๋ ๋๋์ด ๋ค์ด์ ์ฑ
์ด๋ ์ธ๊ฐ์ ๋ ์๊ฐ์ ํ ์ ํ๊ฒ ๋๋ค.

์์ง ์๊ณ ์๋ ๊ฑด ๋๋ฌด ์ ๊ณ , ์์ผ๋ก ๋ฐฐ์์ผ ํ ๊ฑด ๋๋ฌด ๋ง๋ค๋ ์๊ฐ์ ์กฐ๊ธ์ ์กฐ๊ธํ ๋ง์์ด ๋ค์ด์ ๊ณ์ ๊ณต๋ถ๋ฅผ ํด์ ๋จธ๋ฆฟ์์ ์ฑ์ ๋ฃ๊ณ ์ถ์ ๋ง์์ด ๋ ์์๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค. ์ด๋ด ๋ ์ด๋ ๊ฒ ๋งค์ฃผ ๋ฏธ์
์ ํ๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๋ ํํ์ ์คํฐ๋๋ฅผ ํ๋ ๊ฒ ์ ๋ง ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ๊ณ ์์ผ๋ก ์์ ๋ฏธ์
๋ค์ด ๊ธฐ๋๋๋ค. ํ์ฌ์์๋ ๊ฑฐ์ ํผ๋ธ๋ฆฌ์ฑ ์์ฃผ๋ก ์ผ์ ํ๋ค ๋ณด๋๊น ์๋ฐ์คํฌ๋ฆฝํธ์ ์ง์คํ ์ผ์ด ๋ณ๋ก ์์๋๋ฐ ์ด๋ ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฏธ์
์ ํ๋ฉด์ ํ๋ฃจ ์ข
์ผ ์ด๋ป๊ฒ ํ๋ฉด ๋ ์ข์ ์ฝ๋๊ฐ ๋ ์ง ๊ณ ๋ฏผํ๋ ๊ณผ์ ์ด ์ง์ง ๋๋ฌด ์ฌ๋ฐ๊ณ ์ ๋ฌ๋ค.
๊ณ์ ์ฐ๋นํํ๊ฑฐ๋ฆฌ๊ธด ํ์ง๋ง ๊ทธ๋๋ ์ด๊ฒ์ ๊ฒ ๊ณ ๋ฏผํด๊ฐ๋ฉด์ ์ต๋ํ ๊น๋ํ๊ฒ ์ง๋ ค๊ณ ๋๋ฆ๋๋ก ์ด์ฌํ ํ๋๋ฐ, ๋ค๋ฅธ ๋ถ๋ค์ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํ์ ํ์
จ์์ง, ๋ฆฌ๋๋ถ๋ค๊ณผ ์คํฐ๋์๋ถ๋ค์ด ์ด๋ป๊ฒ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ์ค์ง ๊ธฐ๋๋๋ค.

์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋๋ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ ์ฌ๋ฏธ์์๋ค!
์ ์ฌ์ง์ฒ๋ผ ๋ฆฌ๋๋๋ค๊ป์ ๋ด ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํด์ฃผ์๋ ๊ฒ๋ ๋์์ด ๋ง์ด ๋๊ณ , ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ์๋๊ฑธ ๋ณด๋ฉด์ ๋ด ์ฝ๋์๋ ์ ์ฉ์์ผ๋ณด๋ฉด์ ์๋ก์ด ๋ด์ฉ์ ์๊ฒ ๋๊ธฐ๋ ํ๋ค.
์๋์ ์ผ๋ก ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ธฐ๋ง ํ๋ ๊ฒ ์๋๋ผ ๋๋ ๋ค๋ฅธ ์๊ฐ์๋ถ๋ค๊ป ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํด๋๋ฆฌ๋ฉด์ "์ด ์ฝ๋์์ ์ด๋ป๊ฒ ํ๋ฉด ๊ฐ๋ ์ฑ๊ณผ ์ฑ๋ฅ์ด ๋ ํฅ์๋ ๊น?" ๊ณ ๋ฏผํ๋ ์๊ฐ์ ๊ฐ๊ธฐ๋ ํ๊ณ , ์ง๋ฌธ์ ๋ต๋ณ์ ํด๋๋ฆฌ๊ธฐ ์ํด์ ๊ณ ๋ฏผํ๊ณ ์ฐพ์๋ณด๋ฉด์ ๋ด๊ฐ ์ ๋งคํ๊ฒ ์์๋ ๊ฐ๋ ๋ค๋ ํ์คํ๊ฒ ์ ๋ฆฝ๋๋ ์๊ฐ์ ๊ฐ์ก๋ค.




'๊ฐ๋ฐ > ๊ฐ์ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [2์ฃผ์ฐจ ์คํฐ๋ ํ๊ธฐ/15๊ธฐ] ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ (feat. VanillaJS) (0) | 2022.06.16 |
|---|
