Objectμ μμμΌ νλ μ΄μ
μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄λ₯Ό μ€μνκ² μ¬μ©νλ μ΄μ λ₯Ό λͺ¨λ₯Έλ€λ©΄
μ΄ λ¬Έμλ₯Ό λ³΄κ³ λλ©΄
μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄κ° κ°μ§λ νΉμ§μ 볡μ΅νκ³ , λͺ¨λ₯΄λ λΆλΆμ μ°Ύμλμ€ μ μλ€.
Object
κ°μ²΄λΌλ λ§μ νλ‘κ·Έλλ°νλ©΄μ λ§μ΄ λ€μ΄λ³΄κ³ ꡬν λ° μ¬μ© λν ν΄λ΄€μ ν
λ°μ. κ°μ²΄λ κ³Όμ° λ¬΄μμΌκΉμ? κ°μ²΄λ 물리μ μΌλ‘ μ‘΄μ¬νκ±°λ μΆμμ μΌλ‘ μκ°ν μ μλ κ² μ€μμΒ μμ μ μμ±μ κ°μ§κ³ μκ³ λ€λ₯Έ κ²κ³Ό μλ³ κ°λ₯ν κ²μ μλ―Έν©λλ€. κ°μ²΄λ μμ±κ³Ό λμ(λ©μλ)μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€. λ°λΌμ μννΈμ¨μ΄μμ κ°μ²΄λ₯Ό λ§λ λ€λ κ²μ 물리μ μ‘΄μ¬λ, μΆμμ μκ°μ ꡬνλ¬Όλ€μ μμ±κ³Ό λ©μλλ‘ μ μνλ κ³Όμ μ΄λΌκ³ λ³Ό μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈμμμ Object
μλ°μ€ν¬λ¦½νΈλ λ°μ΄ν° μ μ₯μ μν΄ μμ μλ£νκ³Ό κ°μ²΄ μ΄ 2κ°μ§ μ’
λ₯μ μλ£νμ μ¬μ©ν©λλ€. μ«μλ λ¬Έμμ΄ κ°μ λ¨μΌν λ°μ΄ν°λ₯Ό μ μ₯νλ μμ μλ£νμ μλ°μ€ν¬λ¦½νΈ μμμ μ¬μ©νλ κΈ°λ³Έμ μΈ λ°μ΄ν° μ μ₯ ννμ
λλ€. νμ§λ§ μ€μ μ°λ¦¬κ° μ΄μκ°λ μΈμμ λ°μ΄ν°λ€μ μ΄λ° μμ μλ£νμΌλ‘λ λ€ λ΄μ μκ° μμ΅λλ€. λΆκ°λ₯ν κ²μ μλμ§λ§, μ λ°±κ°μ λ³μλ₯Ό μ μΈν΄μΌ νλ λ± λ§€μ° λΉν¨μ¨μ μΌ μ μμ£ .
κ·Έλ¦¬κ³ μλ°μ€ν¬λ¦½νΈκ° μ£Ό 무λλ‘ νλνλ μΉμμλ λ€μν λ°μ΄ν°λ€μ΄ JSON λλ XML λ±μ ννλ‘ ννλμ΄ μ μ‘λλ©°, μ¬λ¬ νμ
μ λ°μ΄ν°κ° λμ΄μ΅λλ€. μ΄λ° λ°μ΄ν°λ₯Ό μΌμΌμ΄ ꡬλΆν΄ μ μ₯νλ€λ©΄ λ§μ μ²λ¦¬ μ§μ°μκ°μ λ°μμν€κ³ , λΉν¨μ¨μ μΈ μ°μ° μμ©μ΄ λ§μ΄ νμν©λλ€. μ΄λ° 볡μ‘μ±μ μλΉμ€ μ¬μ©μμκ² λκΈ°μκ°μ λ°μμν€κ³ μ΄νμ μΌκΈ°ν μλ μμ£ . κ°μ²΄λ μ΄λ¬ν λ°μ΄ν°λ€μ νλμ 컨ν
μ΄λμ λ΄μ μ μ₯νκ³ , λ°μ΄ν°μ μ κ·Όν μ μκ² λμμ€λλ€.
μλλ κ°μ²΄μ λν΄ μ΄ν΄νκ³ μλμ§ μ²΄ν¬ν΄λ³Ό μ μλ λ΄μ©μΈλ°μ. μλμ λ΄μ© μ€ μκ³ μλ κ²κ³Ό λͺ¨λ₯΄λ λΆλΆμ 체ν¬ν΄λ³΄κ³ , νμ΅ν΄λ³΄λ©΄ μ’μ κ² κ°μμ!
μ ν 체ν¬λ¦¬μ€νΈ
1) κ°μ²΄μ μ μ
κ°μ²΄λ κ°μ μ μ₯νλ, μ΄λ¦μ΄ λΆμ μμ±μΌλ‘ ꡬμ±λλ€..
μλ°μ€ν¬λ¦½νΈμμ κ±°μ λͺ¨λ κ²λ€μ κ°μ²΄μ κ°μ΄ λμνλ€. λ³΅ν© κ°μ²΄λ λ¬Όλ‘ , κ°μ²΄μ μμκ° μμ κ°μ²΄μ²λΌ μ·¨κΈν μ μλ€. μ΄ λλ¬Έμ μΌλΆμμλ μλ°μ€ν¬λ¦½νΈλ λͺ¨λ κ²μ΄ κ°μ²΄λΌκ³ λ νλ€.
κ°μ²΄λ new ν€μλμ ν¨κ» μμ±μ ν¨μλ₯Ό νΈμΆνμ¬ λ§λ€ μ μλ€. λλ literal μ΄λΌλ μ½μ ννμ μ¬μ©ν΄μ λ§λ€ μλ μλ€.
2) κ°μ²΄μ μμ κ°
null, undefined, "string", 10, true, falseλ λͺ¨λ κ°μ²΄μ²λΌ λ€λ£¨μ§ μμΌλ©΄ κ°μ²΄μ νΉμ±μ κ°μ§ μλ μμκ°μ΄λ€.
μμκ°μ κ°μΌλ‘ μ μ₯λκ³ , μμκ°μ 볡μ¬νλ©΄ κ·Έλλ‘ λ³΅μ¬κ° λλ€. λ°λ©΄ κ°μ²΄λ μ°Έμ‘°κ° μ μ₯λλ―λ‘ κ°μ²΄λ₯Ό 볡μ¬νλ©΄ μ°Έμ‘°λ§ λ³΅μ¬λλ€.
μμκ°μ λ€λ₯Έ μμκ°κ³Ό λΉκ΅ν λ κ°μ΄ κ°μμ§ λΉκ΅νλ€. λ°λ©΄ κ°μ²΄λ λ€λ₯Έ κ°μ²΄μ λΉκ΅ν λ μλ‘ λκ°μ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλμ§ νμΈνλ€. μ¦ κ°μ²΄λ μλ‘ λμΌν κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μμ λλ§ κ°μ κ²μΌλ‘ λ³Έλ€.
3) κ°μ²΄μ Prototype
κ°μ²΄μ μμ±μ μ°Έμ‘°νλ©΄ λ¨Όμ ν΄λΉ κ°μ²΄μ μμ±μ΄ μ°Έμ‘°λμ΄ μλμ§ νμΈνκ³ , μ°Έμ‘°λμ΄μμ§ μμΌλ©΄ μμ±μ ν¨μμ prototype μμ±μμ μ°Ύλλ€. μ¬κΈ°μλ μ°Ύμ μ μμΌλ©΄ prototypeμ κ°μ²΄μ΄κ³ , κ°μ²΄λ Object() μμ±μλ‘λΆν° λ§λ€μ΄μ§λ―λ‘ Object() μμ±μμ prototype μμ±(Object.prototype)μμ μμ±μ μ°Ύλλ€. μ¬κΈ°μλ μμ±μ μ°Ύμ μ μμΌλ©΄ μ΄ μμ±μ μ μλμ§ μμλ€(undefined)κ³ νλ¨νλ€.
μλ°μ€ν¬λ¦½νΈμμλ νλ‘ν νμ
μ²΄μΈ κ²μμ μ¬μ©ν΄ μμμ ꡬννλ€(μ΄λ₯Ό νλ‘ν νμ
μμμ΄λΌκ³ λΆλ₯Έλ€,)
prototype μμ±μ Object() κ°μ²΄λΌλ μ¬μ€κ³Ό κ°μ²΄ μμ± κ²μ 체μΈ(=νλ‘ν νμ
μμ) λλΆμ λͺ¨λ κ°μ²΄λ Object()λ₯Ό μμλ°λλ€.
4) ν¨μμ κ°μ²΄μμμ μ€μ½ν
μλ°μ€ν¬λ¦½νΈ ν¨μλ 1κΈ κ°μ²΄λ€. ν¨μλ μμ±κ³Ό κ°μ μ§λ κ°μ²΄λ€.
ν¨μ μμμ μ¬μ©νλ this ν€μλλ ν¨μλ₯Ό ν¬ν¨ν κ°μ²΄λ₯Ό μ°Έμ‘°νλ€.
thisμ κ°μ ν¨μκ° νΈμΆλλ 컨ν
μ€νΈμ λ°λΌ κ²°μ λλ€.
μλ°μ€ν¬λ¦½νΈμμλ κ³ μ ν μ€μ½νλ₯Ό λ§λ€κΈ° μν΄ ν¨μλ₯Ό μ¬μ©νλ€.
ν¨μλ μ€μ½ν 체μΈμ ν΅ν΄ λ³μλ₯Ό μ°Ύλλ€.
μ€μ½ν 체μΈμ μ½λκ° μμ±λ μμΉμ λ°λΌ λ§λ€μ΄μ§λ―λ‘ ν¨μκ° νΈμΆλ 컨ν
μ€νΈμλ μν₯μ λ°μ§ μλλ€. μ΄ λλΆμ ν λ² μμ±λ ν¨μλ λ€λ₯Έ 컨ν
μ€νΈ μμ μ€νλλλΌλ μλμ μ€μ½νμ μ κ·Όν μ μλ€. μ΄λ° νΉμ±μΌλ‘ μΈν΄ ν΄λ‘μ κ° λ§λ€μ΄μ§λ€.
μλ°μ€ν¬λ¦½νΈμμμ OOP(Object Oriented Programming)
OOPμ κΈ°λ³Έ 컨μ
μ νλ‘κ·Έλ¨ λ΄μμ νννκ³ μ νλ μ€ μΈκ³(real world)μ μΌλ€μ κ°μ²΄λ₯Ό μ¬μ©ν΄μ λͺ¨λΈλ§νκ³ , κ°μ²΄λ₯Ό μ¬μ©νμ§ μμΌλ©΄ λΆκ°λ₯ νΉμ μμ£Ό μ΄λ €μ μ μΌλ€μ μ½κ² μ²λ¦¬νλ λ°©λ²μ μ 곡νλ€λ κ²μ
λλ€.
-MDN-
Plain Text
볡μ¬
μλ°μ€ν¬λ¦½νΈμλ Object, Function, Array λ±κ³Ό κ°μ΄ λ€μν κΈ°λ³Έ κ°μ²΄λ€μ΄ μκ³ , λͺ¨λ κ°μ²΄λ μλ°μ€ν¬λ¦½νΈμ κΈ°λ³Έ κ°μ²΄μΈ Objectλ₯Ό νμ₯νκ³ μμ΅λλ€. νμ§λ§ μλ°μ€ν¬λ¦½νΈλ ν΄λμ€ κΈ°λ°μ΄ μλλΌ νλ‘ν νμ
μ κΈ°λ°μΌλ‘ νλ κ°μ²΄ κΈ°λ°μ μΈμ΄μ
λλ€. μ΄λ κ² κΈ°λ°μ΄ λ€λ₯΄κΈ° λλ¬Έμ μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ κ³μΈ΅ ꡬ쑰λ₯Ό λ§λ€κ³ μμνλ λ°©λ²μ λͺ
ννμ§ μμ μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈλ ν¨μ κΈ°λ° μΈμ΄μΈ Schemeμ κΈ°λ°μΌλ‘ λ§λ€μ΄μ§ λ€ μλ°μμ λ€μν νλ‘κ·Έλλ° κ°λ
λ€μ κ°μ Έμλλ°μ. λ°λΌμ κ°μ²΄μ§ν₯ μΈμ΄λ μλμ§λ§ κ°μ²΄μ§ν₯κ³Ό λΉμ·ν νΉμ§λ€μ μ§μν©λλ€. μ΄λ₯Ό κ°λ₯νκ² νλ κ°λ
μ΄ λ°λ‘Β νλ‘ν νμ
(prototype)Β μ
λλ€.
μ¬μ€ OOPμ κ°μ²΄μ§ν₯μ ν΄λμ€λΌλ μ£Όμ λ μλ°μ€ν¬λ¦½νΈμ ν΅μ¬μ κ΄ν΅νλ λ΄μ©μ΄λΌκ³ 보기λ μ΄λ ΅μ΅λλ€. νμ§λ§ νλ‘κ·Έλλ° μΈκ³λ₯Ό μ΄ν΄νλλ° μμ΄ μ€μν κ°λ
μ΄κ³ , μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν°νμ
, μ€ν 컨ν
μ€νΈ, this, ν΄λ‘μ , νλ‘ν νμ
λ±μ μ΄ν΄νλ λ° ν° λμμ΄ λ©λλ€.
μ°Έκ³ λ§ν¬
β’