๋ฐ์ํ
๐ ์ค๋ ํ ์ผ
โ๏ธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ๊ด๋ จ ๊ฐ๋ ๋ธ๋ก๊น
๊ฐ์ฒด๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ค๊ฐ์ง ํน์ง(์บก์๋ค์ถ), ํด๋์ค๊ฐ ๋ฌด์์ธ์ง๊น์ง ๋จผ์ ์ ๋ฆฌ๋ฅผ ํ๋ค. ๊ทธ๋ฐ๋ฐ Javascript๋ ํด๋์ค๋ผ๋ ๊ฐ๋ ์ด ์๋ 'ํ๋กํ ํ์ ๊ธฐ๋ฐ'์ธ์ด๋ผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ํด์๋ ํ๋กํ ํ์ ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ํด๋์ค์ ์๋ ๋ฐฉ์์ ํ๋ด๋ด์ผ ํ๋ค. ์ง๊ธ๊น์ง ์ด๋ป๊ฒ ํ๋ด๋ด์๋์ง ๋ค์ํ ์๋๋ค์ด ์์๋๋ฐ, ์ด๋ฅผ ๋๋ ๊ตฌํํด๋ณด๊ธฐ ์ํด์๋ ์ด์ ๊ด๋ จ๋ prototype, __proto__, constructor ์์ฑ๋ค์ ์ญํ ๋ค์ ์ดํดํ๋ ๊ฒ์ด ํ์ํด ์์ธํ ๊ณต๋ถํ๋ ์๊ฐ์ ๊ฐ์ก๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก Object.create ๋ฉ์๋๋ฅผ ์ด์ฉํด ์๋ก์ด ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ณด๊ธฐ๋ ํ๋ค. + ๋ ธ์ ๊ณต์ ํ์ด์ง์ ๋๊ธฐ๋ถ๋ค์ด ์์ฑํ ๊ธ๋ค์ url์ด ์์ด์ ๋ค์ด๊ฐ๋ดค๋๋ฐ, ๊ฐ์ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๋ ๋ฌ๋ผ์ ๋ด๊ฐ ๋์น๊ฑฐ๋ ๋ฏธ์ฒ ์๊ฐํ์ง ๋ชปํ๋ ๋ถ๋ถ๋ค์ ๋ํด ๋ ๋ฐฐ์ธ ์๋ ์์๊ณ , ํนํ ๊ฐ์ ์ฃผ์ ์ธ๋ฐ๋ ๊ฐ์๊ฐ ๋ค๋ฅธ ๋น์ ๋ฅผ ์จ์ ์ค๋ช ํ๊ณ ์์ด์ ๋ณด๋ ์ฌ๋ฏธ๊ฐ ์์๋ค. ์ง์ ์ ์ผ๋ก๋ ์๋์ง๋ง ์ด๋ ๊ฒ ๋ค์ํ ๊ด์ ์์์ ๊ธ๋ค์ ๋ณผ ์ ์์ด ์ข์ ๊ธฐํ์๋ ๊ฒ ๊ฐ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ ๊ฐ์ฒด = (์์ฑ + ํ๋) = (๋ณ์ + ํจ์)
โ๏ธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง 4๊ฐ์ง
1. ์บก์ํ (Encapsulation) : ํ ๊ฐ์ฒด์์ ๋น์ทํ ์ญํ ์ ํ๋ ์์ฑ, ๋ฉ์๋๋ฅผ ์บก์์ฒ๋ผ ํ ๊ณณ(ํด๋์ค)์ ๋ด๋ ๊ฒ
2. ์ถ์ํ(Abstraction) : ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋จ์ํ
3. ์์(Inheritance) : ๋ถ๋ชจํด๋์ค์ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ์ด์ด๋ฐ์ ์ฌ์ฉํ ์ ์๊ฒํจ (์ผ๋ถ ๋ณ๊ฒฝ, ์ถ๊ฐ ๊ฐ๋ฅ)
4. ๋คํ์ฑ(Polymorphism) : ๋ค์ํ ํํ๋ฅผ ๊ฐ์ง๋ ํน์ฑ (by ์ค๋ฒ๋ผ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ)
โ๏ธ prototype & __proto__
1. Constructor๋ฅผ new ์ฐ์ฐ์๋ก ํธ์ถํ๋ฉด instance๊ฐ ๋ง๋ค์ด์ง๋ค.
2. instance์ ์์ฑ์ธ __proto__๋ Constructor์ prototype์ ์ฐธ์กฐํ๋ค.
3. __proto__๋ ์๋ต ๊ฐ๋ฅํ๋ค.
Constructor์ prototype์ ์ด๋ค ์์ฑ์ด๋ ๋ฉ์๋๊ฐ ์๋ค๋ฉด, instance๋ ์๊ธฐ๊ฒ์ธ ๊ฒ ๋ง๋ฅ ๊ทธ ์์ฑ, ๋ฉ์๋์ ์ ๊ทผ
ํ ์ ์๊ฒ ๋๋ค!
โ๏ธ constructor ์์ฑ
์์ฑ์ ํจ์๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ์ผ๋ก, instance์ ์ํ์ด ๋๋ ์์ฑ์ํจ์๊ฐ ๋ฌด์์ธ์ง ์๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ JavaScript์์ Object๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ค ๋ธ๋ก๊น
โ๏ธ Object.create ๋ฉ์๋ ๋ธ๋ก๊น
โ๏ธ ES6 class ํค์๋, super ํค์๋ ์ฌ์ฉ๋ฒ ๋ธ๋ก๊น
โ๏ธ ์์ํ ๋ฐ๊ฒฌ์ด๋ผ๋ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ์ถ๊ฐํด๋ดค๋ค. ์ฌ๊ธฐ์๋ ์์ํ๊ฒ ์๊ฒ๋ ์ง์๋ค ์ค ๊ธฐ์ตํ๊ฑฐ๋ ๋์ค์ ์ธ๋งํ ๊ฒ๋ค์ ๊ทธ๋๊ทธ๋ ์งง๊ฒ ๊ธฐ๋กํด๋๋ ค๊ณ ํ๋ค. ๋ง๋ ๊ธฐ๋
์ผ๋ก ์ค๋๋ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ํ
์คํธ๋ฅผ ํ๋ค๊ฐ ์๊ฒ๋ ๊ฒ๋ ํ๋ ์ถ๊ฐํด๋ดค๋ค..!
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
210116_TIL (ํฌ์ผ๋ชฌ๊ฒ์ ๊ธฐํ) (0) | 2021.01.17 |
---|---|
210115_TIL (OOP ์จ๋จน๊ธฐ, ๊ฐ๋จํ ๊ฒ์ ๊ตฌํํด๋ณด๊ธฐ) (0) | 2021.01.16 |
210113_TIL (ESLint๋ก ๋ฆฌํฉํ ๋งํ๊ธฐ, Node.js๋ก ์๋๋ด ๋ง๋ค๊ธฐ) (0) | 2021.01.14 |
210112_TIL (this์์ฉ - call, apply, bind ๋ฉ์๋ ์ฌ์ฉํด๋ณด๊ธฐ) (0) | 2021.01.13 |
210111_TIL (node.js, git์ ์ต์ํด์ง๊ธฐ) (0) | 2021.01.12 |
๋๊ธ