Skip to content

Latest commit

Β 

History

History
24 lines (17 loc) Β· 2.68 KB

File metadata and controls

24 lines (17 loc) Β· 2.68 KB

https://mooneedev.netlify.app/JavaScript/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85/

ν”„λ‘œν† νƒ€μž…

λ¨Όμ € ν”„λ‘œν† νƒ€μž…μ΄λž€?

  • λ¨Όμ €, 클래슀 언어와 달리 μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” ν΄λž˜μŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹ , μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” κΈ°μ‘΄ 객체의 ν”„λ‘œν† νƒ€μž…μ„ λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • λ”°λΌμ„œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ μ›ν˜•μ΄ λ˜λŠ” 객체λ₯Ό κ°€μ§€λ©°, 이 μ›ν˜•μ΄ λ˜λŠ” 객체λ₯Ό 'ν”„λ‘œν† νƒ€μž…'이라고 ν•©λ‹ˆλ‹€.
  • μ–΄λ– ν•œ 객체/ν•¨μˆ˜λ₯Ό μƒμ„±ν–ˆμ„ λ•Œ prototype ν”„λ‘œνΌν‹°λ‘œ ν•΄λ‹Ή 객체의 μ›ν˜•μ΄ λ˜λŠ” ν”„λ‘œν† νƒ€μž… 객체λ₯Ό μ°Έμ‘°ν•˜κ²Œ λ©λ‹ˆλ‹€.
  • 그리고 ν•΄λ‹Ή ν”„λ‘œν† νƒ€μž… κ°μ²΄μ—μ„œλŠ” constructor ν”„λ‘œνΌν‹°λ‘œ 원본 객체λ₯Ό μ°Έμ‘°ν•˜κ²Œ λ©λ‹ˆλ‹€.
  • λ§Œμ•½ new ν‚€μ›Œλ“œλ‘œ ν•΄λ‹Ή 객체/ν•¨μˆ˜μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•œλ‹€λ©΄ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€μ—μ„œλŠ” __proto__ ν”„λ‘œνΌν‹°λ‘œ 원본 객체의 ν”„λ‘œν† νƒ€μž… 객체에 μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€.

ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μ΄λž€?

  • μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” κΈ°μ‘΄ 객체의 ν”„λ‘œν† νƒ€μž…μ„ λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • λ”°λΌμ„œ, λ§Œμ•½ μ–΄λ–€ 객체에 νŠΉμ • ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν–ˆλŠ”λ°, ν•΄λ‹Ή 객체에 ν”„λ‘œνΌν‹°κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„κ²½μš° __proto__ ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜μ—¬ μƒμœ„ 객체의 ν”„λ‘œν† νƒ€μž…μ— ν•΄λ‹Ή ν”„λ‘œνΌν‹°κ°€ μ‘΄μž¬ν•˜λŠ”μ§€ μ°ΎμŠ΅λ‹ˆλ‹€. λ§Œμ•½μ— μ‘΄μž¬ν•œλ‹€λ©΄ ν•΄λ‹Ή ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜κ²Œ 되고 μ•„λ‹ˆλ©΄ 또 λ‹€μ‹œ __proto__ λ₯Ό μ°Έμ‘°ν•˜μ—¬ 더 μƒμœ„ 객체 ν”„λ‘œν† νƒ€μž…μ—μ„œ ν•΄λ‹Ή ν”„λ‘œνΌν‹°λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.
  • μ΄λ ‡κ²Œ νŠΉμ • ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•  λ•Œ, __proto__ 링크λ₯Ό 계속 μ°Έμ‘°ν•˜μ—¬ μ°Έμ‘°ν•˜λŠ” ν”„λ‘œνΌν‹°λ₯Ό μ°ΎλŠ” 것을 ν”„λ‘œν† νƒ€μž… 체이닝이라고 ν•©λ‹ˆλ‹€.
  • 예λ₯Ό λ“€λ©΄ 일반 λ¬Έμžμ—΄ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œμ—λ„ ν”„λ‘œν† νƒ€μž… 체이닝을 μ‰½κ²Œ κ²½ν—˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ§Œμ•½ const v = 'hello' 와 같은 λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ ν›„ v.toUpperCase() λΌλŠ” λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 상황을 λ– μ˜¬λ¦¬λ©΄ μ‰½μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” v λ³€μˆ˜μ— toUpperCase λΌλŠ” ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•œ 적이 μ—†λŠ”λ° 잘 싀행이 λ©λ‹ˆλ‹€. μ΄λŠ” λ³€μˆ˜ v κ°€ String 객체의 μΈμŠ€ν„΄μŠ€μ΄λ©°, λ”°λΌμ„œ String 객체의 ν”„λ‘œν† νƒ€μž…μ— μ‘΄μž¬ν•˜λŠ” toUpperCase λΌλŠ” λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•˜κ³  μžˆμŒμ„ κ°€λ¦¬ν‚΅λ‹ˆλ‹€.

μ‰λ„μž‰ ν˜„μƒ

  • κ°μ²΄μ—μ„œ μ–΄λ–€ ν”„λ‘œνΌν‹°λ₯Ό 찾을 λ•Œ, ν•΄λ‹Ή 객체와 이 객체λ₯Ό 기점으둜 ν•œ prototype μ—°μ‡„μ˜ μƒμœ„ μˆ˜μ€€ 두 κ³³μ—μ„œ λ™μ‹œμ— 발견될 λ•Œ μ‰λ„μž‰ ν˜„μƒμ΄ μΌμ–΄λ‚©λ‹ˆλ‹€.
  • 즉, ν•΄λ‹Ή 객체에 μ§μ†μœΌλ‘œ μ—°κ²°λ˜μ–΄μžˆλŠ” ν”„λ‘œνΌν‹° λ•Œλ¬Έμ—, μƒμœ„ μ—°μ‡„μ˜ ν”„λ‘œνΌν‹°κ°€ κ°€λ €μ§€λŠ” ν˜„μƒμž…λ‹ˆλ‹€.