[๐Ÿฆ TIL 29์ผ์ฐจ] 7์›” 12์ผ

๊ทผ๋“€ยท2023๋…„ 7์›” 12์ผ
0

ํ”„๋ก ํŠธ์—”๋“œ์Šค์ฟจ TIL

๋ชฉ๋ก ๋ณด๊ธฐ
29/30
post-thumbnail

1. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

๐Ÿ“Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๊ธฐ์ค€

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š”ย ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ(reachability)ย ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ(reachability), ๋ฃจํŠธ(root)ย  = ์–ด๋–ป๊ฒŒ๋“  ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’

๐Ÿ“Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • mark-and-sweep

2. ํ”„๋กœํ† ํƒ€์ž…

  • ์œ ์ „์ž ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ๋ช…์„ธ์„œ์—์„œ ๋ช…๋ช…ํ•œย [[Prototype]]์ด๋ผ๋Š” ์ˆจ๊น€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • ์ด ์ˆจ๊น€ ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ย null์ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋˜๋Š”๋ฐ, ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ ์ฐธ์กฐ ๋Œ€์ƒ์„ 'ํ”„๋กœํ† ํƒ€์ž…(prototype)'์ด๋ผ ๋ถ€๋ฅธ๋‹ค.
  • ํ”„๋กœํ† ํƒ€์ž…์€ ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค

๐Ÿ“Œ prototype ์ด๋ž‘ proto์˜ ์ฐจ์ด์ 

  1. ๋ฌธ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค.

  2. prototype:

  • prototype์€ ํ•จ์ˆ˜ ๊ฐ์ฒด(function)๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ์ด๋‹ค.
  • ํ•จ์ˆ˜ ๊ฐ์ฒด์˜ prototype ์†์„ฑ์€ ํ•ด๋‹น ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋  ๊ฐ์ฒด๋“ค์ด ๊ณต์œ ํ•  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • prototype์€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์ด ์ƒ์†๋ฐ›์„ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • ํ•จ์ˆ˜์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์„ ๋•Œ
  1. __proto__:
  • __proto__๋Š” ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‚ด๋ถ€ ์†์„ฑ์ด๋‹ค.
  • ๊ฐ์ฒด์˜ __proto__ ์†์„ฑ์€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž…(๋ถ€๋ชจ ๊ฐ์ฒด)์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ๊ฐ์ฒด์˜ __proto__๋ฅผ ํ†ตํ•ด ์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž…์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์†๋ฐ›์„ ๋•Œ

3. ํด๋ž˜์Šค

  • ํด๋ž˜์Šค๋Š” ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ์ผ์ข…์˜ ํ‹€์ด๋‹ค.

๐Ÿ“Œ ๊ธฐ๋ณธ๋ฌธ๋ฒ•

class MyClass {
  // ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ
  constructor() { ... }
  method1() { ... }
  method2() { ... }
  method3() { ... }
  ...
}
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํด๋ž˜์Šค๋Š” ํ•จ์ˆ˜์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค.

4. ํšŒ๊ณ 

์–ด์ œ ๋‚ฎ์ž ์ž”๊ฑฐ ๋•Œ๋ฌธ์— ๋ณต์Šต์„ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ๊นŒ์ง€ ํ•ด์„œ ์ž ์„ ๊ฑฐ์˜ ๋ชป์žค๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ˆ˜์—…์‹œ๊ฐ„ ๋‚ด๋‚ด ์กธ์•„์„œ ์ˆ˜์—…์„ ๊ฑฐ์˜ ๋ชป๋“ค์—ˆ๊ณ  ๋•๋ถ„์— ์˜ค๋Š˜์€ ํ˜ผ์ž ์ž์Šต๋งŒ ๊ณ„์† ํ–ˆ๋‹ค. ๋•๋ถ„์— ์ดํ•ด๊ฐ€ ๊ฐ€๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ ์—ญ์‹œ๋‚˜ ์ด๋ก ์ด๋ผ ์‘์šฉ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์ง„์งœ ๋ถ€ํŠธ์บ ํ”„ ๊ธฐ๊ฐ„๋™์•ˆ์€ ์ž ์•ˆ์ž๊ณ  ์‚ด๊ณ ์‹ถ๋‹ค.. ๊ทธ๋ฆฌ๊ณ  ๊ณผ์ œ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ ์ง„์งœ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์ „ํ˜€ ์•ˆ์˜จ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๊ณผ์ œ ์ œ์ถœ ๋ชปํ• ๊นŒ๋ด ๊ฑฑ์ •์ด๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€