πŸ“ŒLanguage/JavaScript

TIL) ν”„λ‘œν† νƒ€μž… 체인, __proto__ 와 prototype 의 차이, ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μ˜ 쒅점

hellohailie 2022. 5. 26. 18:46

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

- μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” νŠΉμ • 객체의 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ†Œλ“œμ— μ ‘κ·Όμ‹œ 객체 μžμ‹ μ˜ 것 뿐 μ•„λ‹ˆλΌ __proto__κ°€ κ°€λ¦¬ν‚€λŠ” 링크λ₯Ό λ”°λΌμ„œ μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” ν”„λ‘œν† νƒ€μž… 객체의 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ†Œλ“œλ₯Ό μ ‘κ·Ό ν•  수 μžˆλ‹€. 

λ”°λΌμ„œ, νŠΉμ • 객체의 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ†Œλ“œ μ ‘κ·Ό μ‹œ λ§Œμ•½ ν˜„μ œ 객체의 ν•΄λ‹Ή ν”„λ‘œνΌν‹°κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ __proto__κ°€ κ°€λ¦¬ν‚€λŠ” 링크λ₯Ό 따라 λΆ€λͺ¨ 역할을 ν•˜λŠ” ν”„λ‘œν† νƒ€μž… 객체의 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ†Œλ“œλ₯Ό μ°¨λ‘€λ‘œ κ²€μƒ‰ν•˜λŠ” 것이 λ°”λ‘œ ν”„λ‘œν† νƒ€μž… 체인이닀. 

 

- λͺ¨λ“  ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μ˜ 쒅점은 Object.prototype 이닀. 

 

- ν•˜μœ„ κ°μ²΄λŠ” μƒμœ„ 객체의 ν”„λ‘œνΌν‹°λ‚˜ λ©”μ†Œλ“œλ₯Ό μƒμ†λ°›λŠ” 것이 μ•„λ‹ˆλΌ κ³΅μœ ν•œλ‹€. 

 

 

μ‹€μŠ΅ν•˜λ©΄μ„œ ν”„λ‘œν† νƒ€μž… 체인의 κ³Όμ • μ΄ν•΄ν•˜κΈ°! ( __proto__λ₯Ό 이용)

 

let div = document.createElement('div');

div.__proto__ // HTMLDIVElement
div.__proto__.__proto__ // HTMLElement
div.__proto__.__proto__.__proto__ //Element
div.__proto__.__proto__.__proto__.__proto__ // Node
div.__proto__.__proto__.__proto__.__proto__.__proto__ // EventTarget
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ // Object
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ 
// null
μ•„ν•˜! Objectκ°€ ν”„λ‘œν† νƒ€μž…μ˜ μ’…μ μ΄κ΅¬λ‚˜!

 

πŸ‘‡

 

 

__proto__ μ™€ prototype μ˜ 차이

__proto__

  1. λͺ¨λ“  객체가 가지고 μžˆλ‹€.
  2. ν•˜λ‚˜μ˜ Link λΌκ³  ν•  수 μžˆλ‹€.

prototype

  1. ν•¨μˆ˜ 객체만 가지고 μžˆλ‹€.
  2. μƒμ„±μžλ₯Ό κ°€μ§€λŠ” μ›ν˜•μœΌλ‘œ μ„ μ–Έ ν•  수 μžˆλ‹€.