λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ’»Study/JavaScript

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

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” 객체와 μ—°κ²°λ˜μ–΄ 있고, 이것을 ν”„λ‘œν† νƒ€μž… 객체 λ˜λŠ” ν”„λ‘œν† νƒ€μž…μ΄λΌκ³  λΆ€λ₯Έλ‹€. κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μžμ‹ μ˜ κ²ƒμ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€. (μƒμ†μ˜ κ°œλ…κ³Ό μœ μ‚¬ν•¨)

 

 

var obj = {
    name : 'hello',
    age : 30
}

console.log(obj.toString());
console.dir(obj);

 

obj 객체에 toString() μ΄λΌλŠ” λ©”μ†Œλ“œκ°€ μ—†μ§€λ§Œ μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ”,  obj 객체의 ν”„λ‘œν† νƒ€μž…μ— toString()이 이미 μ •μ˜λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€.

 

 

좜λ ₯ κ²°κ³Ό

 

console.dir(obj)의 좜λ ₯물을 보면 _proto_ μ•ˆμ— toString이 μ •μ˜λ˜μ–΄ μžˆμŒμ„ 확인할 수 μžˆλ‹€. κ·Έ 외에도 valueOf λ“± κΈ°λ³Έ λ‚΄μž₯ λ©”μ†Œλ“œλ₯Ό κ°€μ§€κ³  μžˆλ‹€. 이 λ©”μ†Œλ“œλ“€μ€ μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œμ€€ λ©”μ†Œλ“œλ‘œμ„œ ECMAScript λͺ…μ„Έμ„œμ— μ •μ˜λ˜μ–΄ μžˆλ‹€.

 

λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…μ„ κ°€λ¦¬ν‚€λŠ” [[Prototype]]μ΄λΌλŠ” μˆ¨κ²¨μ§„ ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§„λ‹€. ECMAScript λͺ…μ„Έμ„œμ—λŠ” [[Prototype]]이라고 λ‚˜μ™€μžˆμœΌλ©°, 크둬은 _proto_으둜 λͺ…μ‹œλ˜μ–΄ μžˆλ‹€.

 

객체의 ν”„λ‘œν† νƒ€μž…μ€ 객체λ₯Ό 생성할 λ•Œ κ²°μ •λœλ‹€. 예λ₯Ό λ“€μ–΄ μœ„μ˜ μ˜ˆμ‹œμ²˜λŸΌ 객체 λ¦¬ν„°λŸ΄ λ°©μ‹μœΌλ‘œ μƒμ„±λœ κ°μ²΄λŠ” Object.prototype 객체(_proto_κ°€ κ°€λ¦¬ν‚€λŠ” 객체)λ₯Ό ν”„λ‘œν† νƒ€μž…μœΌλ‘œ κ°€μ§„λ‹€. 반면 ν”„λ‘œν† νƒ€μž… 객체λ₯Ό λ™μ μœΌλ‘œ λ‹€λ₯Έ 객체둜 λ°”κΎΈλŠ” 것도 κ°€λŠ₯ν•˜λ‹€. => 이λ₯Ό 톡해 객체 상속 κ΅¬ν˜„