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

JavaScript

(3)
[Javascript] μžλ°”μŠ€ν¬λ¦½νŠΈ 객체 - νžˆλ“ ν΄λž˜μŠ€, μΈλΌμΈμΊμ‹œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ°μ²΄λŠ” λ‹€λ₯Έ 정적 νƒ€μž… μ–Έμ–΄μ—μ„œ ν”νžˆ λ³Ό 수 μžˆλŠ” ν΄λž˜μŠ€λ‚˜ ꡬ쑰체와 λ‹€λ₯΄κ²Œ λŸ°νƒ€μž„ λ™μ•ˆ 자유둭게 생성, μˆ˜μ •, ν™•μž₯될 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‹€μŒκ³Ό 같은 μ½”λ“œμ—μ„œ 객체λ₯Ό μ„ μ–Έν•˜κ³  λ‚˜μ„œ μ–Έμ œλ“ μ§€ ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆλ‹€. const person = { name: "Jongbin", age: 29 };person.job = "Programmer";  κ°μ²΄ person을 μƒμ„±ν•˜κ³  이후에 jobμ΄λΌλŠ” μƒˆλ‘œμš΄ ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν–ˆλ‹€. Javascript의 이런 μœ μ—°μ„± 덕뢄에 κ°œλ°œμžλŠ” μ–΄λ–€ μƒν™©μ—μ„œλ„ 객체의 ꡬ쑰λ₯Ό 자유둭게 λ³€κ²½ν•  수 μžˆλ‹€. 동적 타이핑(dynamic typing)κ³Ό 동적 객체 ꡬ쑰(dynamic object structure)κ°€ κ²°ν•©λœ 이런 νŠΉμ„±μœΌλ‘œ νŽΈν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€. ..
[Javascript] ν”„λ‘œν† νƒ€μž… (Prototype) 졜근 이전에 κ³΅λΆ€ν–ˆλ˜ λ‚΄μš©μ΄ 잘 기얡이 λ‚˜μ§€ μ•ŠμŒμ„ κΉ¨λ‹«κ³  μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ μ€‘μ˜ κΈ°λ³Έ ν”„λ‘œν† νƒ€μž…μ— λŒ€ν•΄μ„œ μž¬ν•™μŠ΅ν–ˆλ‹€. 🧐 ν”„λ‘œν† νƒ€μž…μ΄λž€? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”νžˆ μ‚¬μš©ν•˜λŠ” ν΄λž˜μŠ€κ°œλ…μ΄ ES6(2015)에 λ„μž…μ΄ λ˜μ—ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ½”λ“œ μž¬μ‚¬μš©, μΊ‘μŠν™”λ₯Ό μ–΄λ–»κ²Œ ν–ˆμ„κΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž…μ„ 기반으둜 상속과 μΊ‘μŠν™”λ₯Ό 지원할 수 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  κ°μ²΄μ—λŠ” ν•΄λ‹Ή μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ˜ μƒμœ„ 역할을 ν•˜λŠ” 객체인 ν”„λ‘œν† νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€. λ”°λΌμ„œ λͺ¨λ“  κ°μ²΄λŠ” [[Prototype]]μ΄λΌλŠ” 인터널 슬둯(internal slot)을 가지고 μžˆλ‹€. [[Prototype]]의 값은 null λ˜λŠ” 객체둜 ν”„λ‘œν† νƒ€μž… 체인을 μ΄μš©ν•΄ ν”„λ‘œν† νƒ€μž…μ˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. λΈŒλΌμš°μ €μ—μ„œ 객체λ₯Ό 좜λ ₯해보면 ..
[JavaScript] μ‹€ν–‰μ»¨ν…μŠ€νŠΈ μ‹€ν–‰μ»¨ν…μŠ€νŠΈλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ μ‹€ν–‰μ»¨ν…μŠ€νŠΈ, ν™˜κ²½λ ˆμ½”λ“œ, λ ‰μ‹œμ»¬ν™˜κ²½ λ“±μ˜ 관계가 ꡉμž₯히 λ³΅μž‘ν•˜κ²Œ μ–½ν˜€μžˆμŒμ„ μ•Œκ²Œ λ˜μ—ˆλ‹€. κ·ΈλŸ¬λ‹€ 문득 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ˜ κ²½μš°μ— μ‹€ν–‰μ»¨ν…μŠ€νŠΈλŠ” μ–΄λ–€μ‹μœΌλ‘œ λ™μž‘ν•˜λŠ”μ§€κ°€ κΆκΈˆν•΄μ‘Œλ‹€. μš°μ„  μ‹€ν–‰μ»¨ν…μŠ€νŠΈλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ μ•Œκ²Œ 된 λ‚΄μš©λ“€μ„ 정리해 보렀고 ν•œλ‹€. ⁉️ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘μ›λ¦¬λ₯Ό λ‹΄λŠ” 핡심 κ°œλ…μœΌλ‘œ κ°„λ‹¨νžˆ λ§ν•΄μ„œ μ½”λ“œμ˜μ‹€ν–‰ν™˜κ²½μ΄λΌκ³  λ³Ό 수 μžˆλ‹€. μ‹€ν–‰μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜λŠ” μ½”λ“œμ—λŠ” 넀가지가 μ‘΄μž¬ν•œλ‹€. 1. μ „μ—­ μ½”λ“œ: 전역에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œ 2. ν•¨μˆ˜ μ½”λ“œ: ν•¨μˆ˜ 내뢀에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œ 3. eval μ½”λ“œ: eval ν•¨μˆ˜μ˜ 인수둜 μ „λ‹¬λ˜μ–΄ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 4. λͺ¨λ“ˆ μ½”λ“œ: λͺ¨λ“ˆ 내뢀에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œ κ°€μž₯ λ¨Όμ € μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€ν…μ— μ „μ—­ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μƒμ„±λ˜κ³ , μ „μ—­ λ ‰μ‹œμ»¬ν™˜κ²½..