🀍 은지log 🀍

ν•¨μˆ˜μ™€ 일급 객체 λ³Έλ¬Έ

πŸ’œ λͺ¨λ˜Javascript

ν•¨μˆ˜μ™€ 일급 객체

Eun_zii 2022. 9. 28. 14:23

🎣 일급 객체

  • 무λͺ…μ˜ λ¦¬ν„°λŸ΄λ‘œ μƒμ„±ν• μˆ˜ μžˆλ‹€. 즉, λŸ°νƒ€μž„μ— 생성이 κ°€λŠ₯ν•˜λ‹€.
  • λ³€μˆ˜λ‚˜ 자료ꡬ쑰(객체,λ°°μ—΄ λ“±)에 μ €μž₯ν• μˆ˜ μžˆλ‹€.
  • ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— μ „λ‹¬ν• μˆ˜ μžˆλ‹€.
  • ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©ν• μˆ˜ μžˆλ‹€.

ν•¨μˆ˜λŠ” 값을 μ‚¬μš©ν• μˆ˜ μžˆλŠ” κ³³(λ³€μˆ˜ ν• λ‹Ήλ¬Έ, 객체의 ν”„λ‘œνΌν‹° κ°’, λ°°μ—΄μ˜ μš”μ†Œ, ν•¨μˆ˜ 호좜의 인수, ν•¨μˆ˜ λ°˜ν™˜λ¬Έ)이라면 μ–΄λ””μ„œλ“ μ§€ λ¦¬ν„°λŸ΄λ‘œ μ •μ˜ν•  수 있으며 λŸ°νƒ€μž„μ— ν•¨μˆ˜ 객체둜 ν‰κ°€λœλ‹€.

일급 κ°μ²΄λ‘œμ„œ ν•¨μˆ˜κ°€ κ°€μ§€λŠ” κ°€μž₯ 큰 νŠΉμ§•μ€ 일반 객체와 같이 ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— 전달할 수 있으며, ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€λŠ” 것이닀.

ν•¨μˆ˜λŠ” 객체 μ΄μ§€λ§Œ 일반 κ°μ²΄μ™€λŠ” 차이가 μžˆλ‹€. 일반 κ°μ²΄λŠ” ν˜ΈμΆœν• μˆ˜ μ—†μ§€λ§Œ ν•¨μˆ˜ κ°μ²΄λŠ” ν˜ΈμΆœν•  수 μžˆλ‹€. 그리고 ν•¨μˆ˜ κ°μ²΄λŠ” 일반 κ°μ²΄μ—λŠ” μ—†λŠ” ν•¨μˆ˜ 고유의 ν”„λ‘œνΌν‹°λ₯Ό μ†Œμœ ν•œλ‹€.

🎣 ν•¨μˆ˜ 객체의 ν”„λ‘œνΌν‹°

arguments, caller, length, name, prototype ν”„λ‘œνΌν‹°λŠ” λͺ¨λ‘ ν•¨μˆ˜ 객체의 데이터 ν”„λ‘œνΌν‹° 이닀.

Arguments ν”„λ‘œνΌν‹°

arguments κ°μ²΄λŠ” ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λœ μΈμˆ˜λ“€μ˜ μ •λ³΄λŠ” λ‹΄κ³  μžˆλŠ” 순회 κ°€λŠ₯ν•œ μœ κ°€ λ°°μ—΄ 객체 이며, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 지역 λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©λœλ‹€.
즉, ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œλŠ” μ°Έμ‘°ν• μˆ˜ μ—†λ‹€.

 

Function.arguments와 같은 μ‚¬μš©λ²•μ€ ꢌμž₯λ˜μ§€ μ•ŠμœΌλ©° ( ν•¨μˆ˜ 객체의 arguments ν”„λ‘œνΌν‹°λŠ” ν‘œμ€€μ—μ„œ νμ§€λ˜μ—ˆλ‹€.) 

ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 지역 λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλŠ” arguments객체λ₯Ό μ°Έμ‘°ν•˜λ„λ‘ ν•œλ‹€.

 

μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜μ™€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜λŠ” 인수의 개수λ₯Ό ν™•μΈν•˜μ§€ μ•ŠλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νŠΉμ„± λ•Œλ¬Έμ— ν•¨μˆ˜κ°€ 호좜되면 인수 개수λ₯Ό ν™•μΈν•˜κ³  이에 따라 ν•¨μˆ˜μ˜ λ™μž‘μ„ 달리 μ •μ˜ν•  ν•„μš”κ°€ μžˆμ„μˆ˜ μžˆλ‹€.
μ΄λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 것이 arguments 객체이닀.

 

argumentsκ°μ²΄λŠ” λ§€κ°œλ³€μˆ˜ 개수λ₯Ό ν™•μ •ν•  수 μ—†λŠ” κ°€λ³€ 인자 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν• λ•Œ μœ μš©ν•˜λ‹€.

arguments κ°μ²΄λŠ” λ°°μ—΄ ν˜•νƒœλ‘œ 인자 정보λ₯Ό λ‹΄κ³  μžˆμ§€λ§Œ μ‹€μ œ 배열이 μ•„λ‹Œ μœ μ‚¬ λ°°μ—΄ 객체닀. μœ μ‚¬ λ°°μ—΄ κ°μ²΄λž€ length ν”„λ‘œνΌν‹°λ₯Ό 가진 객체둜 for문으둜 μˆœνšŒν•  수 μžˆλŠ” 객체λ₯Ό λ§ν•œλ‹€.

length ν”„λ‘œνΌν‹°

ν•¨μˆ˜ 객체의 length ν”„λ‘œνΌν‹°λŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ„ μ–Έν•œ λ§€κ°œλ³€μˆ˜μ˜ 개수λ₯Ό 가리킨닀.

arguments 객체의 length ν”„λ‘œνΌν‹°λŠ” 인자의 개수λ₯Ό 가리킀고, ν•¨μˆ˜ 객체의 length ν”„λ‘œνΌν‹°λŠ” λ§€κ°œλ³€μˆ˜μ˜ 개수λ₯Ό 가리킨닀.

name ν”„λ‘œνΌν‹°

ν•¨μˆ˜ 객체의 name ν”„λ‘œνΌν‹°λŠ” ν•¨μˆ˜ 이름을 λ‚˜νƒ€λ‚Έλ‹€. ν•¨μˆ˜ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μžλ₯Ό κ°’μœΌλ‘œ κ°–λŠ”λ‹€.

βš‹protoβš‹ μ ‘κ·Όμž ν”„λ‘œνΌν‹°

βš‹protoβš‹ ν”„λ‘œνΌν‹°λŠ” [[ Prototype ]] λ‚΄λΆ€ 슬둯이 κ°€λ¦¬ν‚€λŠ” ν”„λ‘œν† νƒ€μž… 객체에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ‹€.

λ‚΄λΆ€ μŠ¬λ‘―μ—λŠ” 직접 μ ‘κ·Όν• μˆ˜ μ—†κ³  간접적인 μ ‘κ·Ό 방법을 μ œκ³΅ν•˜λŠ” κ²½μš°μ— ν•œν•˜μ—¬ μ ‘κ·Όν• μˆ˜ μžˆλ‹€.

[[ Prototype ]] λ‚΄λΆ€ μŠ¬λ‘―μ—λ„ 직접 μ ‘κ·Όν•  수 μ—†μœΌλ©° βš‹protoβš‹ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 κ°„μ ‘μ μœΌλ‘œ ν”„λ‘œν† νƒ€μž… 객체에 μ ‘κ·Όν•  수 μžˆλ‹€.

prototype ν”„λ‘œνΌν‹°

prototype ν”„λ‘œνΌν‹°λŠ” μƒμ„±μž ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•  수 μžˆλŠ” ν•¨μˆ˜ 객체, 즉 constructor만이 μ†Œμœ ν•˜λŠ” ν”„λ‘œνΌν‹°λ‹€.

일반 객체와 μƒμ„±μž ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•  수 μ—†λŠ” non-constructorμ—λŠ” prototype ν”„λ‘œνΌν‹°κ°€ μ—†λ‹€.

prototype ν”„λ‘œνΌν‹°λŠ” ν•¨μˆ˜κ°€ 객체λ₯Ό μƒμ„±ν•˜λŠ” μƒμ„±μž ν•¨μˆ˜λ‘œ 호좜될 λ•Œ μƒμ„±μž ν•¨μˆ˜κ°€ 생성할 μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œν† νƒ€μž… 객체λ₯Ό 가리킨닀.

728x90