๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Language/JavaScript

[FE/JavaScript] ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ

by DevIseo 2022. 6. 13.

์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ


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 ํ‚ค์›Œ๋“œ๋กœ ๋นˆ ๊ฐ์ฒด{}๋ฅผ ๋งŒ๋“ ๋‹ค
  1. ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๋นˆ ๊ฐ์ฒด์— ์ƒ์„ฑ ํ•  property๋ฅผ ์ •์˜
  2. ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋ฐ”๋””์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด this์— ์†์„ฑ ๋ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€
  3. ๋งŒ๋“  ๋นˆ ๊ฐ์ฒด์˜ proto์— ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ prototype์„ ๋Œ€์ž…
  4. this๋ฅผ ์ƒ์„ฑ์ž์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋ณ€ํ™˜

+)https://doitnow-man.tistory.com/132

+)https://publizm.github.io/posts/javascript/constructor

'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