๐ŸŒ• ๋ณด๋ฆ„์นผ๋Ÿผ

๋‹จ์ˆœ ๊ธฐ๋ก๋ณด๋‹จ ์ข€ ๋” ์–‘์งˆ์˜, ์ •๋ฆฌ๋œ ๊ธ€์„ ์“ฐ๊ณ ์ž ์‹œ์ž‘ํ•˜๋Š” ๋ณด๋ฆ„์นผ๋Ÿผ
๋ถ€๋‹ด์—†์ด ๋งค ๋ณด๋ฆ„ ํ•˜๋‚˜์˜ ์ฃผ์ œ๋ฅผ ๊นŠ๊ฒŒ ๋“ค์—ฌ๋‹ค๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
๊ฐ€์ˆ˜ ์œค์ข…์‹ ๋‹˜์ด ์›”๊ฐ„ ์œค์ข…์‹ ์„ ํ†ตํ•ด ๊พธ์ค€ํžˆ ์Œ์•…์„ ๋‚ด์‹œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ณด๋ฆ„์นผ๋Ÿผ์„ ์ ์–ด๋ณด์ž!

๋ณด๋ฆ„์นผ๋Ÿผ ๊ทœ์น™

  1. ๋งค์ผ์„ ๊ธฐ๋กํ•˜๋Š” ์„ฑ์žฅ์ผ์ง€๋ณด๋‹ค ์ข€๋” ๊นŠ์€ ๋‚ด์šฉ์˜ ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž.
  2. ๋„ˆ๋ฌด ์š•์‹ฌ๋ถ€๋ฆฌ์ง€๋ง๊ณ  ํ•˜๋‚˜์˜ ์ฃผ์ œ(ํ‚ค์›Œ๋“œ)์— ์ง‘์ค‘ํ•œ๋‹ค.
  3. 2์ฃผ์— ํ•œ ๋ฒˆ ๋‹ค๋“ฌ์–ด์ง„ ์นผ๋Ÿผ ํ˜•ํƒœ์˜ ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.
  4. ๋งˆ๊ฐ์€ ๋งค์ฃผ ์ผ์š”์ผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

๐Ÿ“ƒ ๊ธ€๋˜ 8๊ธฐ

๊ฐœ๋ฐœ์ž๋“ค์ด ๋ชจ์—ฌ ํ•จ๊ป˜ ๊ธ€์„ ์“ฐ๊ณ  ํ”ผ๋“œ๋ฐฑํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์ธ ๊ธ€๋˜(๊ธ€์“ฐ๋Š” ๋˜๋ผ์ด๊ฐ€ ์„ธ์ƒ์„ ๋ฐ”๊พผ๋‹ค.)์—์„œ ํ™œ๋™ํ•˜๊ฒŒ ๋˜์–ด ๋ณด๋ฆ„์นผ๋Ÿผ์˜ ๊ทœ์น™์€ ๊ธ€๋˜์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ธฐ๋กœ ํ•œ๋‹ค.
2์ฃผ๋งˆ๋‹ค ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ๊ทœ์น™์€ ๋™์ผํ•˜๋ฉฐ, ๊ทธ ๋งˆ๊ฐ ๋‚ ์งœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋งˆ๊ฐ ๋‚ ์งœ๋ฅผ ์ฒดํฌํ•˜๋ฉฐ ๋งค๋ฒˆ ๊ธ€ ์ž‘์„ฑ์— ๋Œ€ํ•ด ์ธ์ง€ํ•˜๋„๋ก ํ•˜์ž!

๐Ÿšˆ ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œโ€ฆ

์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๊ณ  ๊ฐ€์žฅ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๊ณ  ๊ณต๊ฐ๋˜์ง€ ์•Š์•˜๋˜ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์˜ ๋ง์ด ์žˆ์—ˆ๋‹ค. ์–ด๋–ค ์‹ค์ฒดํ™”๋œ ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ฒƒ์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ํ˜„์‹ค์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒŒ ๊ฐœ๋ฐœ์ž๋‹ค.์™€ ๊ฐ™์€ ๋ง๋“ค์ด์—ˆ๋‹ค. ๋‹น์žฅ ํ™”๋ฉด์— Hello, Wolrd!๋ฅผ ์ฐ์–ด๋‚ด๊ณ , ๋ช‡๋ช‡ ๊ณ„์‚ฐ์„ ํŽธํ•˜๊ฒŒ ํ•˜๋Š” ์ •๋„์˜ ๋‚˜์—๊ฒ ์ „ํ˜€ ๊ณต๊ฐ์ด ๋˜์งˆ ์•Š์•˜๋‹ค. ์ดํ›„ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ๊ทธ ๋ง์„ ๋”ฐ๋ผ๊ฐ€๋‹ค๋ณด๋‹ˆ ๊ฐ์ฒด์ง€ํ–ฅ์— ๋„๋‹ฌํ–ˆ๋‹ค.
์ฒ˜์Œ ์ฑ… ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด๋ฅผ ์ฝ์—ˆ์„ ๋•Œ, ์ฝ๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ํฌ๊ธฐํ–ˆ์—ˆ๋‹ค. ๋„ˆ๋ฌด ์ข‹์€ ์ฑ…์ด๋ผ๊ณ  ์ด์•ผ๊ธฐ๋Š” ๋“ค์—ˆ์ง€๋งŒ, ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์ฝ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ์ถ”์ƒ์ ์œผ๋กœ ๋‹ค๊ฐ€์™”๊ณ  ์ฝ์„์ˆ˜๋ก ๋” ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋Š๋‚Œ์ด์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ํ๋ฅด๊ณ  ์–ด๋Š์ •๋„ ์ ˆ์ฐจ์ง€ํ–ฅ์—์„œ ํ•จ์ˆ˜, ๋ชจ๋“ˆ์„ ๋‚˜๋ˆ„๊ณ  ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋‹ค์‹œ ์ด ์ฑ…์„ ํŽผ์ณ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ฑ…์€ ์งง์€ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์ธ์ƒ์—์„œ ๋‚ด ์ตœ์•  ์„œ์ ์ด ๋˜์—ˆ๋‹ค. ์ •๋ง ์ •๋ง ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งˆ์น˜ ๋นจ๋ ค๋“ค์–ด๊ฐ€๋“ฏ์ด ์ฝ์—ˆ๊ณ  ๋‹ค ์ฝ๊ณ  ๋‚œ ๋’ค, ์ •๋ง ํ˜„์‹ค์— ์žˆ๋Š” ๋ชจ๋“  ๊ฑธ ๋‹ค ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ๋งŒ ๊ฐ™์•˜๋‹ค.(๋ฌผ๋ก  ์‹ค์ œ๋กœ ๊ทธ๋ ‡์ง„ ์•Š๋‹ค. ๐Ÿคช)
์ฒ˜์Œ ๊ฐ์ฒด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ๊ธฐ์จ์„ ๊ธฐ์–ตํ•˜๊ณ  ๋™์‹œ์— ์ด์ œ ์ฒ˜์Œ ๊ฐ์ฒด์ง€ํ–ฅ์— ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธฐ์‹  ๋ถ„๋“ค์ด ์‰ฝ๊ฒŒ ๊ทธ ๋Š๋‚Œ(?)์„ ๋ฐ›์œผ์…จ์œผ๋ฉด ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.

๐Ÿœ ์‚ฌ์ „์  ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๋ญ˜๊นŒ? ๋จผ์ € ๋‹จ์–ด๋ฅผ ๋ถ„๋ฆฌํ•ด๋ณด์ž. ๊ฐ์ฒด์™€ ์ง€ํ–ฅ ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ. ์‚ฌ์ „์—์„œ ์ด 3๊ฐ€์ง€ ๋‹จ์–ด์˜ ์ •์˜๋ฅผ ์ฐพ์•„๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๊ฐ์ฒด: (๋ช…์‚ฌ) ํ–‰์œ„๊ฐ€ ๋ฏธ์น˜๋Š” ๋Œ€์ƒ
  • ์ง€ํ–ฅ: (๋ช…์‚ฌ) ์–ด๋–ค ๋ชฉํ‘œ๋กœ ๋œป์ด ์ ๋ฆฌ์–ด ํ–ฅํ•จ
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ: (๋ช…์‚ฌ) ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ์ผ. ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ๋ฐ ์ฝ”๋”ฉ ๋“ฑ ์ผ๋ จ์˜ ์ž‘์—…์„ ์•„์šฐ๋ฅธ๋‹ค.

๋‹จ์ˆœํ•˜๊ฒŒ ์‚ฌ์ „์  ์˜๋ฏธ์ด๋‹ค๋ณด๋‹ˆ ์•„์ฃผ ์ง๊ด€์ ์œผ๋กœ ์™€๋‹ฟ์ง€๋Š” ์•Š๋Š”๋‹ค. ๋‹ค๋งŒ, ๋Œ€๋žต์ ์œผ๋กœ ์–ด๋–ค ๋Œ€์ƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ ์ •๋„๋กœ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ธˆ๋” ๋‚˜์•„๊ฐ€์„œ ๋ฌด์–ธ๊ฐ€ ๊ฐ๊ฐ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋Œ€์ƒ๋“ค๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ ๋„ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์‚ฌ์ „์ ์œผ๋กœ ์ตœ๋Œ€ํ•œ ์œ ์ถ”ํ•ด๋ณด๋Š” ๊ฒƒ์€ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ํ•œ๊ณ„์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ปดํ“จํ„ฐ๊ณตํ•™์ ์œผ๋กœ(?) ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ?

๐Ÿœ ์ปดํ“จํ„ฐ๊ณตํ•™์ (?) ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ผ๋‹จ ์ž˜๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ ์œ„ํ‚ค๋ฐฑ๊ณผ์—์„œ์˜ ์„ค๋ช…์„ ์ฐพ์•„๋ณด์ž.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP)์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ "๊ฐ์ฒด"๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.
๋˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋” ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๊ณผ ๋ณด์ˆ˜๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•˜๋ฉฐ, ๋ณด๋‹ค ์ง๊ด€์ ์ธ ์ฝ”๋“œ ๋ถ„์„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ง€๋‚˜์นœ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒดํ™” ๊ฒฝํ–ฅ์€ ์‹ค์ œ ์„ธ๊ณ„์˜ ๋ชจ์Šต์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋น„ํŒ์„ ๋ฐ›๊ธฐ๋„ ํ•œ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์„ ์กฐ๊ธˆ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์ž.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด๋‹ค.
ํ•œ ์ค„ ํ•œ ์ค„ ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, โ€œ๊ฐ์ฒดโ€๋ผ๋Š” ํ•˜๋‚˜์˜ ๋‹จ์œ„์ด์ž ๋ฉ์–ด๋ฆฌ๋กœ ๋‚˜๋ˆˆ๋‹ค.
์ด ๋‹จ์œ„๋“ค์€ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฝ”๋“œ ๋ณ€๊ฒฝ(์ˆ˜์ •)์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋” ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•˜๋ฉฐ, ์ข€๋” ์ง๊ด€์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ์ง€๋‚˜์น˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์€ ์‹ค์ œ ์„ธ๊ณ„์˜ ๋ชจ์Šต์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

์œ„์˜ ๋ฌธ์žฅ์ด ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ „๋ถ€ ์„ค๋ช…ํ•ด์ฃผ์ง€๋Š” ๋ชปํ•œ๋‹ค. ๋‹ค๋งŒ, ์•„์ฃผ ๋Œ€๋žต์ ์œผ๋กœ๋ผ๋„ ๊ทธ ๋Š๋‚Œ์€ ๋ญ”์ง€ ์•Œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ญ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ช…๋ น ๋‚ด๋ฆฌ๋“ฏ์ด ์งœ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ผ๋Š” ๋ฉ์–ด๋ฆฌ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์„ฑํ•˜๋Š” ๋Š๋‚Œ ์ •๋„๋กœ๋งŒ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ฝ”๋“œ๋กœ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•ด๋ณด๋ฉด ์–ด๋–จ๊นŒ?

๐Ÿœ JavaScript ์ฝ”๋“œ๋กœ ๋ณด๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋จผ์ € ๊ฐœ๋ฏธ(ant)๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์‹œ์ž‘์€ ์ •๋ง ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด๋ณด์ž.

let ant;

์ด๊ฒŒ ๋ญ์ง€..? ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ง ๊ทธ๋Œ€๋กœ ant๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ํ˜„์žฌ ant๋ผ๋Š” ๋ณ€์ˆ˜๋Š” ์–ด๋– ํ•œ ์œ ์˜๋ฏธํ•œ ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ์ฒœ์ฒœํžˆ ์ด ant์—๊ฒŒ ์ƒ๊ธฐ๋ฅผ ๋ถˆ์–ด๋„ฃ์–ด๋ณด์ž.

let ant = { name: 'ant1', age: 1 };

์ด์ œ๋Š” ์–ด๋–ค๊ฐ€? ant๋ฅผ name, age๋ฅผ ํ”„๋กœํผํ‹ฐ(์†์„ฑ)๋กœ ๊ฐ–๋Š” object๋กœ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ๊ฐœ๋ฏธ๊ฐ€ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ๊ฐ–๊ฒŒ ๋๋‹ค.
ํ—Œ๋ฐ ์—ฌ๊ธฐ์„œ ๋˜ ์š•์‹ฌ์ด ๋‚œ๋‹ค. ์ง€๊ธˆ ์ด ๊ฐœ๋ฏธ๋Š” ์ •์ ์ธ ์ƒํƒœ(ํ”„๋กœํผํ‹ฐ)๋งŒ ๊ฐ–๊ณ  ์žˆ์„ ๋ฟ ๋ญ”๊ฐ€ ์–ด๋–ค ๋™์ ์ธ ํ–‰๋™(๋ฉ”์„œ๋“œ)์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
์ข€๋” ์‚ด์•„์žˆ๋Š”(?) ๊ฐœ๋ฏธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

let ant = {
  name: 'ant1',
  age: 1,
  move() {
    console.log('ant is moving!');
  },
};

ant์˜ ๋ฉ”์„œ๋“œ๋กœ move๋ฅผ ์ž‘์„ฑํ•ด์คŒ์œผ๋กœ์จ ant๊ฐ€ ๋งˆ์น˜ ์›€์ง์ด๋Š” ๋“ฏํ•œ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค. ๋‹ค๋งŒ, ์—ฌ๊ธฐ์„œ move ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ โ€˜ant is moving!โ€™์ด๋ผ๋Š” ๋ฌธ์ž์—ด๋งŒ console์— ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰, ๊ฐœ๋ฏธ์˜ move ํ–‰๋™์ด ๊ฐœ๋ฏธ ์Šค์Šค๋กœ์—๊ฒŒ ์–ด๋– ํ•œ ์˜ํ–ฅ๋„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.(๊ฐœ๋ฏธ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.) ์ผ๋‹จ ์ด ์ ์€ ๋„˜์–ด๊ฐ€๊ณ  ๊ฐœ๋ฏธ๋ฅผ ์ข€๋” ๋™์ ์ธ ์–ด๋–ค ๋ฌด์–ธ๊ฐ€(๊ฐ์ฒด)๋กœ ๋งŒ๋“ค์—ˆ์Œ์„ ๊ธฐ์–ตํ•˜์ž.

์ž, ๊ทธ๋Ÿผ ์ด์ œ ๋˜๋‹ค๋ฅธ ์š•์‹ฌ์ด ์Šค๋ฌผ์Šค๋ฌผ ์ƒ๊ธด๋‹ค. ์„ธ์ƒ์— ๊ฐœ๋ฏธ๋Š” ๋‹จ 1๋งˆ๋ฆฌ๋งŒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.(์ถ”์ •์ƒ ์ง€๊ตฌ์— ๊ฐœ๋ฏธ๋Š” ์•ฝ 2๊ฒฝ ๋งˆ๋ฆฌ ์„œ์‹ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ใ…Žใ„ทใ„ท) ๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋กœ๋Š” ๊ฐœ๋ฏธ๋ฅผ ํ•˜๋‚˜ ํ•˜๋‚˜ ์ž‘์„ฑํ•˜๋ฉฐ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ์—ฌ๊ฐ„ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด ์•„๋‹ ์ˆ˜ ์—†๋‹ค. ์ด์ œ ์—ฌ๊ธฐ์„œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ธ class๋ฅผ ์จ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ class๋Š” 2015๋…„ ES6์—์„œ ๋„์ž…๋˜์—ˆ๋‹ค. ๊ทธ ๋‚ด๋ถ€์˜ ๊ตฌํ˜„์ด ๊ฒฐ๊ตญ์—” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ prototype์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ์— ๋น„๊ผฌ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋งŽ์ด ๋“ฃ๋Š”๋‹ค.(์ฐ class๋กœ ์ธ์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ญ ๊ทธ๋Ÿฐ ์ด์•ผ๊ธฐโ€ฆ)

๊ฑฐ๋‘์ ˆ๋ฏธํ•˜๊ณ  class๋ฅผ ์ด์šฉํ•ด์„œ ant๋ฅผ ํ‘œํ˜„ํ•ด๋ณด์ž.

// ๋ณดํ†ต class๋Š” ์ฒซ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์“ด๋‹ค.
// (์†Œ๋ฌธ์ž๋กœ ์“ด๋‹ค๊ณ  ๋ญ ํฐ์ผ๋‚˜๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ํ•˜๋‚˜์˜ ์•ฝ์†์ด๋ผ ์ƒ๊ฐํ•˜์ž.)
class Ant {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  move() {
    console.log('ant is moving!');
  }
}

const ant1 = new Ant('ant1', 1);
const ant2 = new Ant('ant2', 3);
const ant3 = new Ant('ant3', 8);

์ง ! ์ด์ œ ์šฐ๋ฆฌ๋Š” Ant๋ผ๋Š” class๋ฅผ ์„ ์–ธํ•ด์คŒ์œผ๋กœ์จ, ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์—ฌ๋Ÿฌ๋งˆ๋ฆฌ์˜ ant๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฐœ๋ฏธ๋“ค์€ ๊ฐ์ž์˜ name์ด ์žˆ๊ณ , age๊ฐ€ ์žˆ์œผ๋ฉฐ move ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ž ๊น ์‰ฌ์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

  • Ant class๊ฐ€ ๊ฐ–๋Š” name๊ณผ age, ์ฆ‰ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐœ๋ฏธ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ instance ์ƒ์„ฑ ์‹œ, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’(์ด๋ฆ„, ๋‚˜์ด)์„ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • Ant class๊ฐ€ ๊ฐ–๋Š” move๋Š” ๋ฉ”์„œ๋“œ, ์ฆ‰ ๊ฐœ๋ฏธ์˜ ํ–‰๋™(๋™์ž‘)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ instance ์ƒ์„ฑ ์‹œ, ๋ชจ๋“  ๊ฐœ๋ฏธ instance๋Š” move๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด์„œ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฏธ๋ผ๋Š” ๊ณค์ถฉ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์˜ class๋ฅผ ๋งŒ๋“ค๊ณ  ์ด class๋ฅผ ํ†ตํ•ด์„œ ์‹ค์ฒดํ™”๋œ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ๊ฐœ๋ฏธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์‹ค์ œ ์šฐ๋ฆฌ๊ฐ€ ์‚ด์•„๊ฐ€๋Š” ์„ธ์ƒ์—์„œ์˜ ๊ฐœ๋…๊ณผ ์ฐจ์ด๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ์šฐ๋ฆฌ๊ฐ€ ์•„์ง ๊ฐœ๋ฏธ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋˜ ์‹œ์ ˆ, ์šฐ๋ฆฌ๋Š” ์ฃผ์œ„์— ๋Œ์•„๋‹ค๋‹ˆ๋Š” ์‹ค์ œ ๊ฒ€๊ณ  3๋“ฑ์‹ ์˜ ๋‹ค๋ฆฌ๊ฐ€ ๋‹ฌ๋ฆฐ ์•„์ฃผ ์ž‘์€ ๊ณค์ถฉ๋“ค(ํ˜„์žฌ์˜ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฏธ๋ผ๊ณ  ๋ถ€๋ฅด๋Š”)์„ ๋ณด๋ฉด์„œ โ€œ์ด๋Ÿฐ ์• ๋“ค์„ ๊ฐœ๋ฏธ๋ผ๊ณ  ๋ถ€๋ฅด์žโ€ํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ด ์ ‘๊ทผ์ด ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋จผ์ € ์šฐ๋ฆฌ๊ฐ€ ํฐ ๊ฐœ๋…์ธ Ant class ๋ผ๋Š” ๊ฐœ๋…์„ ๋งŒ๋“ค์–ด๋‘๊ณ  ๊ทธ class์—์„œ ์‹ค์ฒดํ™”๋œ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ๊ฐœ๋ฏธ๋“ค์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์กฐ๊ธˆ์€ ๊ฐ์ฒด์ง€ํ–ฅ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ–‰์œ„๊ฐ€ ์ดํ•ด๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ์•„๊นŒ ์–ธ๊ธ‰ํ–ˆ๋˜ ์–ด๋”˜๊ฐ€ ์•„์‰ฌ์šด move ๋ฉ”์„œ๋“œ๋ฅผ ์ข€๋” ํ˜„์‹ค๊ณผ ๋งž๊ฒŒ ๋ฐ”๊ฟ”๋ณด์ž. ์šฐ์„ , ์ด๋ฅผ ์œ„ํ•ด ๊ฐœ๋ฏธ์˜ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ๋ฐ›๊ณ  moveํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์œ„์น˜์—์„œ ๋žœ๋ค์œผ๋กœ +1 ํ˜น์€ -1๋งŒํผ ์ด๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์ž.

class Ant {
  constructor(name, age, position) {
    this.name = name;
    this.age = age;
    this.position = position;
  }

  move() {
    if (Math.random() < 0.5) {
      this.position--;
    } else {
      this.position++;
    }

    console.log(`${this.name} ๊ฐœ๋ฏธ์˜ ์œ„์น˜๋Š” ${this.position} ์ง€์  ์ž…๋‹ˆ๋‹ค.`);
  }
}

const ant1 = new Ant('ant1', 2, 0);
const ant2 = new Ant('ant2', 3, -5);
const ant3 = new Ant('ant3', 5, 15);

์ž, ์ด์ œ move๋ผ๋Š” ๋ฉ”์„œ๋“œ(ํ–‰๋™)๋ฅผ ํ†ตํ•ด ๊ฐ๊ฐ์˜ ๊ฐœ๋ฏธ ๊ฐ์ฒด์˜ position ํ”„๋กœํผํ‹ฐ(์ƒํƒœ)๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ, ๋งˆ์น˜ ์‹ค์ œ ๊ฐœ๋ฏธ๊ฐ€ ์ด๋ฆฌ์ €๋ฆฌ ์›€์ง์ด๋Š” ๊ฑธ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์ง€๋งŒ, ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ๋˜ ์–ด๋–ค ๊ฐ’๋„ ๋“ค์–ด์žˆ์ง€ ์•Š์€(๋ฌผ๋ก  undefined๋กœ ์ดˆ๊ธฐํ™”๋˜๊ฒ ์ง€๋งŒ) ant ๋ณ€์ˆ˜์— ๋น„ํ•˜๋ฉด ๋งŽ์€ ๊ฑธ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฏธ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๐Ÿš‰ ๊ธ€์„ ๋งˆ์น˜๋ฉฐโ€ฆ

์š”์ฆ˜ ์ •๋ง ์ •๋ง ๊ธ€์„ ์ž˜ ์“ฐ๊ณ  ์‹ถ์€ ์š•์‹ฌ์ด ๋งŽ์ด ๋“ ๋‹ค. ๊ธ€ ์ž‘์„ฑ๊ณผ ์ฝ”๋“œ ์ž‘์„ฑ์€ ์–ธ์–ด๋งŒ ๋‹ค๋ฅด์ง€ ๊ทธ ํ–‰์œ„ ์ž์ฒด๋Š” ์ •๋ง ๋˜‘๊ฐ™์€ ๊ฒƒ ๊ฐ™๋‹ค. ํŠนํžˆ ์š”์ฆ˜์€ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ํŽธํ•œ, ๊ฐ€๋™์„ฑ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ๊ฐ•์กฐํ•˜๋Š”๋งŒํผ ๋” ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค. ์กฐ๊ธˆ ์›ƒ๊ธด ๊ฑด ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•˜๊ณ  ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ์ข€๋” ๋‚˜์€ ๋ฌธ๋ฒ•์„ ์ฒดํฌํ•˜๋‹ค๋ณด๋‹ˆ ์ด์ƒํ•˜๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ๋„ ๊ทธ๋Ÿฐ ์Šต๊ด€์ด ์ƒ๊ธด๋‹ค. ์–ด๋–ป๊ฒŒ ์ข€๋” ํŒŒํŠธ๋ฅผ ์ž˜ ๋‚˜๋ˆ„๊ณ , ํ๋ฆ„์„ ์ž˜ ๊ฐ€์ ธ๊ฐ€๋ฉด์„œ ์ข€๋” ์ข‹์€ ํ‘œํ˜„์„ ์“ธ๊นŒ ์ƒ๊ฐํ•˜๋ฉด์„œ ์จ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋œ๋‹ค. ์•„์ฃผ ์•„์ฃผ ์ข‹์€ ์‹œ๋„ˆ์ง€๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๐Ÿฅณ

์ด๋ฒˆ ๊ธ€์€ ๊ฐ๊ฐ์˜ ํŒŒํŠธ๋“ค์„ ๊ฐœ๋ฏธ ์ด๋ชจ์ง€๋กœ ํ‘œํ˜„ํ•ด๋ดค๋‹ค. ๊ฐœ๋ฏธ ํŒŒํŠธ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๋ชจ์—ฌ์„œ ์ด ๊ธ€ ์ „์ฒด๋ฅผ ์™„์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค์ด ๋ชจ์—ฌ ํฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์™„์„ฑ๋˜๋Š” ๋Š๋‚Œ์„ ํ‘œํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.(์ž˜ ์ „๋‹ฌ๋˜์—ˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.) ์ด๋ ‡๋“ฏ ๊ฐ์ฒด์ง€ํ–ฅ์—์„  ๊ฐ์ฒด๋“ค์ด ๊ทธ๋“ค๋งŒ์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ๊ฐ–๊ณ  ์„œ๋กœ๋ฅผ ๋„์™€๊ฐ€๋ฉฐ(ํ˜‘๋™ํ•˜๋ฉฐ) ๊ฑฐ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๊ฐ„๋‹ค. ์ด๋ฒˆ ๊ธ€์„ ํ†ตํ•ด ๊ฐ์ฒด ํ•˜๋‚˜์— ๋Œ€ํ•ด ์ง‘์ค‘ํ–ˆ๋‹ค๋ฉด, ๋‹ค์Œ ํŽธ์—์„  ๊ฐ ๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ์„œ๋กœ ๋„์™€๊ฐ€๋ฉฐ ์ข€๋” ์Šค์ผ€์ผ์—…๋œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š”์ง€ ์‚ดํŽด๋ณด๋ ค ํ•œ๋‹ค.

์•„์ง ๋งŽ์ด ๋ถ€์กฑํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ๋‚ด์šฉ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด, ์–ธ์ œ๋“  ํŽธํ•˜๊ฒŒ ๋ง์”€ํ•ด์ฃผ์„ธ์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๐ŸŽ ์ฐธ๊ณ