์์ฑ์ ํจ์์ ์ํ ๊ฐ์ฒด ์์ฑ
Q.์์ฑ์ ํจ์๊ฐ ๋ญ๊ฐ์?
A. ์์ฑ์(constructor)ํจ์๋ new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ์ฌ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํ๋ ํจ์!
์์ฑ์ ํจ์์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ **์ธ์คํด์ค(instance)**๋ผ๊ณ ํจ.
Q.๊ฐ์ฒด ๋ฆฌํฐ๋ด๋ก ๋ง๋ค ๋์๋ ๋ฌด์จ ์ฐจ์ด๊ฐ ์์ฃ ? ์ ์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ๋์?
โถ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋ฌธ์ ์
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ ๊ฐ์ ํํ์ ๊ฐ์ฒด๋ฅผ ์ฌ์์ฑ ๋ถ๊ฐ!
- ๋์ผํ ํ๋กํผํฐ๋ฅผ ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํด์ผ ํ ๊ฒฝ์ฐ ๋งค๋ฒ ๊ฐ์ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ ํด์ผํจ(๋นํจ์จ์ )
โถ์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์
- ์์ฑ์ ํจ์์ ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋ง์น ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ(ํด๋์ค)์ฒ๋ผ ์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํด ํ๋กํผํฐ ๊ตฌ์กฐ๊ฐ ๋์ผํ ๊ฐ์ฒด ์ฌ๋ฌ ๊ฐ๋ฅผ ๊ฐํธํ๊ฒ ์์ฑํ ์ ์์
- ์ฆ, ์ฌ๋ฌ๊ฐ์ ๋์ผํ property๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ!
- ๋ํ, prototype์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ฐ์ ์ํด ์ฌ์ฉ
+) https://mylko72.gitbooks.io/front-end-note/content/constructormd.html
https://velog.io/@minj9_6/JavaScript-์์ฑ์-ํจ์์-์ํ-๊ฐ์ฒด-์์ฑ
Q.์์ฑ์ ํจ์๊ฐ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด์ค ์ ์๋์?
๐์์ฝ
#new ์ฐ์ฐ์์ ํจ๊ป ์์ฑ์ ํจ์๋ฅผ ํธ์ถ ์ JavaScript ์์ง์ ์๋ฌต์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก
์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํ ํ ํ ์๋ฌต์ ์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ฐํ
1.์ธ์คํด์ค ์์ฑ๊ณผ this binding (ํ์)
2.์ธ์คํด์ค ์ด๊ธฐํ (optional)
3.์ธ์คํด์ค ๋ฐํ
new ํค์๋๋ก ๋น ๊ฐ์ฒด{}๋ฅผ ๋ง๋ ๋ค
- ์์ฑ์ ํจ์๋ ๋น ๊ฐ์ฒด์ ์์ฑ ํ property๋ฅผ ์ ์
- ์์ฑ์ ํจ์ ๋ฐ๋์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด this์ ์์ฑ ๋ฐ ๋ฉ์๋๋ฅผ ์ถ๊ฐ
- ๋ง๋ ๋น ๊ฐ์ฒด์ proto์ ์์ฑ์ ํจ์์ prototype์ ๋์
- this๋ฅผ ์์ฑ์์ ๋ฐํ๊ฐ์ผ๋ก ๋ณํ
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[FE/JavaScript] strict mode (0) | 2022.06.27 |
---|---|
[FE/JavaScript]this (0) | 2022.06.23 |
JavaScript - Event (0) | 2022.05.03 |
JavaScript - DOM(Document Object Model) (0) | 2022.05.03 |
JavaScript - Asynchronous JavaScript(์ฝ๋ฐฑํจ์, Async callbacks,Promise), Axios (0) | 2022.05.03 |
๋๊ธ