Object(Instance), Classμ λν΄ κ°μ΄ μ€μ§ μλλ€λ©΄ μ΄ κΈ μ μ°Έκ³ ν΄μ£ΌμΈμ.
OOPμ λν΄μ 곡λΆλ₯Ό νλ μ€μ Object
μ λν΄ κ³΅λΆκ° λΆμ‘±νλ€λ μκ°μ΄ λ€μ΄ Object(Instance)
μ Class
μ λν΄ λ¨Όμ 곡λΆλ₯Ό νκ² λμλ€.
곡λΆλ₯Ό νλ©° λ΄κ° κ·Έλμ ν€λ©¨λ λ΄μ©μ λν΄ μ 리λ₯Ό νλ€.
κ°μ²΄ λ 무μμΌκΉ?
JavaScript
μμ λ³μμ ν¨μλ μνμ κ°λ κ°μ²΄μ΄λ€. κ·Έλ¦¬κ³ JavaScript
μμλ μ΄ μνμ __proto__
([[Prototype]]
) κ³Ό prototype
μΌλ‘ λνλΈλ€.
prototype
μ νλ‘ν νμ
κ°μ²΄ λ₯Ό λ§νλ κ²μ΄κ³ ,
__proto__
λ νλ‘ν νμ
λ§ν¬ λ₯Ό λ§νλ κ²μ΄λ€.
μ΄λ₯Ό μμΈν μμ보μ.
λμΌν λ΄μ©μ΄ μλ°μ€ν¬λ¦½νΈ μ€ν°λ μ리μ¦μ μκΈ°λ νμ§λ§, μλ°μ€ν¬λ¦½νΈ μ리μ¦μλ μ΄ λ΄μ©μ λ£κ³ μΆμ΄μ κ°μ κΈμ λ λ² ν¬μ€ν νκ² λμλ€.
μ€μ½νλ νν, λ³μμ μμ‘΄ λ²μ λΌκ³ μκ³ μλ€. λ λν κ·Έλ κ²λ§ μκ°νκ³ μμλ€. λ¬Όλ‘ μ΄ λ§μ΄ λ§λ₯ νλ¦°κ²μ μλμ§λ§, μ€μ½νλ λ³΄λ€ λμ κ°λ μ ν¬ν¨νλ λ¨μ΄μ΄λ€. >
μμ±μμ this
μ λν΄μ μμ보μλ€.
κ°μΈμ μΌλ‘ μμ±μ ν¨μλΌλ λ§ λ³΄λ€λ ν¨μμ μμ±μκ° λ§λ€κ³ μκ°νμ§λ§, μμ±μλΌκ³ μμ±νλ©΄ μ½λλ° ν·κ°λ¦¬λ λΆλΆμ΄ μμ κ² κ°μ μ΄ν΄λ₯Ό μν΄ μμ±μ ν¨μλΌκ³ μ μλ€.
- μΈμ¬μ΄λ μλ°μ€ν¬λ¦½νΈ Ch.4.4λ₯Ό μ°Έκ³ νμλ€.
μ€ν 컨ν
μ€νΈμ κ΄ν μ§λλ² μλ£μμ thisλ μ€ν 컨ν
μ€νΈμ λ°λΌ λ¬λΌμ§λ€
λΌλ λ΄μ©μ κ°λ¨νκ² μΈκΈνμλ€.
κ·Έ λλ μ λ¬λΌμ§λμ§
μ λν΄μ μΈκΈμ νμλ€. μ΄λ²μλ μ΄λ»κ² λ¬λΌμ§λμ§
μ λν λ΄μ©μ΄λ€.
νΉμλ λ§ν¬λ₯Ό νκ³ κ°μ§ μμ λκ΅°κ°λ₯Ό μν΄ κ°λ¨νκ² λ§ν΄λ³΄μλ©΄,
Execution context κ° λ§λ€μ΄μ§ λ
this
κ° λ°μΈλ©μ΄ λκΈ° λλ¬Έμ΄λ€. κ·Έλ¬λκΉ μ€ν μ€μ κ²°μ μ΄ λλ€λ λ§μ΄λ€.
μ§λ JavaScript, Front-End λ°ν μ£Όμ λ this μμ§λ§, 곡λΆνλ€ λ³΄λ μ€ν 컨ν μ€νΈμ λν λ΄μ©μ΄ μ νλμΌ ν κ² κ°μ μ€ν 컨ν μ€νΈμ λνμ¬ λ°νλ₯Ό νκ² λμλ€.
μ¬λ¬ μλ£μ μ± μ μ°Έκ³ νλ©° 곡λΆλ₯Ό νκ³ μμμλ λ΄μ©μ΄ μ μλΏμ§ μμ μ°Έκ³ 1μ μ°Έκ³ 2, μ°Έκ³ 3, μ°Έκ³ 4, μ± μΈμ¬μ΄λ μλ°μ€ν¬λ¦½νΈ, Poiema Webμ μ°Έκ³ νμ¬ λ²μμ ν΄λ³΄κ³ μ νλ€. μΆκ°μ μΌλ‘ λ΄κ° μ¬λ¬ μλ£λ₯Ό μ°Ύμ보면μ μκ² λ λ΄μ©λ€λ λ§λΆμΌ κ²μ΄λ€.
μ€ν 컨ν μ€νΈ, Execution Context(μ΄ν EC) λΌλ κ°λ μ λμκ² λ―μ€μκΈ°μ λμ κ°μ μ¬λλ€μ΄ μμ κ² κ°μ ννλ€ μλ μ½μ€ν μ μμμΌλ‘ κΈμ μ¨λ³΄λλ‘ νκ² λ€.
μλ°μ€ν¬λ¦½νΈλ μ»΄νμΌ μΈμ΄μΈκ°μ, μΈν°νλ¦¬ν° μΈμ΄μΈκ°μ? λΌλ λ΄μ©μ κ²μνλ©΄ μ’ μ’ λ³΄μ΄λ λ¨μ΄κ° μλ€.
λ°λ‘ JITC (Just-In-Time Compiler) λΌλ λ¨μ΄μΈλ°, κ°μ΄ λμ€λ λ΄μ©μΈ μ¦ JITCλ μΈν°ν리ν μ νλ€κ°, νμν λΆλΆμ λν΄μλ μ»΄νμΌμ νμ¬ μ΅μ νλ₯Ό νλ€ μ΄λ€. μ΄ λ§μ λ΄μ©μ λ§μ§λ§ μ΄λ¦μ΄ νλ Έλ€.
μμ λ°©μμ Adaptive JITC λΌκ³ νμ¬, μ΅κ·Ό λλ€μμ JavaScript μμ§λ€μ΄ μ°¨μ©νλ λ°©μμ΄λ€. κ·Έλ¦¬κ³ JITC λ κ³Όκ±°μ JavaScript μμ§λ€μ΄ μ°¨μ©νλ λ°©μμ΄λ€.