πΈ17μ₯. μμ±μ ν¨μμ μν κ°μ²΄ μμ±
Last updated
Last updated
μμ μ΄ν΄λ³Έ κ°μ²΄ 리ν°λ΄μ μν κ°μ²΄ μμ± λ°©μ μΈμ, κ°μ²΄λ₯Ό μμ±νλ λ€μν λ°©λ²μ λν λ΄μ©μ μ΄ν΄λ³Ό μμ μ΄λ€.
μΈμ€ν΄μ€(instance)
: μμ±μ ν¨μμ μν΄ μμ±λ κ°μ²΄
μλ°μ€ν¬λ¦½νΈμμλ Object
μμ±μ ν¨μ μ΄μΈμλ String, Number, Boolean, Function, Array, Date, RegExp, Promise
λ±μ λΉλμΈ(built-in)
μμ±μ ν¨μλ₯Ό μ 곡
{}
)μ μν κ°μ²΄ μμ± λ°©μμ λ¬Έμ μ κ°μ²΄ 리ν°λ΄μ μν κ°μ²΄ μμ± λ°©μμ μ§κ΄μ μ΄κ³ κ°νΈνμ§λ§, λ¨ νλμ κ°μ²΄λ§ μμ±νλ€λ λ¬Έμ κ° μλ€.
κ°μ²΄λ λ€μ 2κ°μ§λ₯Ό ννν μ μλ€.
νλ‘νΌν°
λ₯Ό ν΅ν΄ κ°μ²΄ κ³ μ μ **μν(state)**λ₯Ό νν
λ©μλ
λ₯Ό ν΅ν΄ μν λ°μ΄ν°μΈ νλ‘νΌν°λ₯Ό μ°Έμ‘°νκ³ μ‘°μνλ **λμ(behavior)**μ νν
μν(state)μ κ²½μ°λ κ°μ²΄λ§λ€ λ€λ₯Έ κ°μ κ°μ§ μ μμ§λ§, λ©μλ(behavior)μ κ²½μ°λ λ΄μ©μ΄ λμΌν κ²½μ°κ° μΌλ°μ μ΄λ€.
νμ§λ§, κ°μ²΄ 리ν°λ΄λ‘ κ°μ²΄λ₯Ό νννλ κ²½μ°, νλ‘νΌν°μ κ΅¬μ‘°κ° λμΌν¨μλ λΆκ΅¬νκ³ , λ§€λ² κ°μ νλ‘νΌν°μ λ©μλλ₯Ό κΈ°μ ν΄μΌνλ€.
κ°μ²΄λ₯Ό μμ±νκΈ° μν ν νλ¦Ώ(ν΄λμ€)μ²λΌ μμ±μ ν¨μλ₯Ό μ¬μ©νμ¬ νλ‘νΌν° κ΅¬μ‘°κ° λμΌν κ°μ²΄ μ¬λ¬κ°λ₯Ό κ°νΈνκ² μμ±ν μ μλ€.
μ°Έκ³ λ‘, this
λ κ°μ²΄ μμ μ νλ‘νΌν°λ λ©μλλ₯Ό μ°Έμ‘°νκΈ° μν μκΈ° μ°Έμ‘° λ³μ(self-referencing varaible)λ‘, thisκ° κ°λ¦¬ν€λ κ°(this λ°μΈλ©)μ ν¨μ νΈμΆ λ°©μμ λ°λΌ λμ μΌλ‘ κ²°μ λλ€.
μμ±μ ν¨μ λ΄λΆμ thisλ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€.
μλ°μ€ν¬λ¦½νΈμμμ μμ±μ ν¨μ
μλ°μ κ°μ ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯μΈμ΄μ μμ±μμλ λ€λ₯΄κ², μλ°μ€ν¬λ¦½νΈμ μμ±μλ νμμ΄ μ ν΄μ Έμμ§ μλ€.
μΌλ° ν¨μμ λμΌν λ°©λ²μΌλ‘ μμ±μ ν¨μλ₯Ό μ μνκ³
new μ°μ°μμ ν¨κ» νΈμΆνλ©΄ ν΄λΉ ν¨μλ μμ±μ ν¨μλ‘ λμνλ€.
λ°λΌμ, λ§μ½ new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ₯Ό νΈμΆνμ§ μμΌλ©΄, μΌλ° ν¨μλ‘ λμνλ€.
μΌλ° ν¨μμ μμ±μ ν¨μμ νμ μ°¨μ΄λ μμ§λ§, new
μ°μ°μμ ν¨κ» ν¨μλ₯Ό νΈμΆνλ©΄, ν΄λΉ ν¨μλ μμ±μ ν¨μλ‘ λμνλ€.
**new.target
**μ΄λ, ES6μ λμ
λμ΄ new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ‘μ νΈμΆλμλμ§ νμΈν μ μλ λ¬Έλ²μ΄λ€.
new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ‘μ νΈμΆλλ©΄ : ν¨μ λ΄λΆμ new.targetμ ν¨μ μμ
μ κ°λ¦¬ν¨λ€.
new μ°μ°μμ μμ΄ μΌλ° ν¨μλ‘μ νΈμΆλλ©΄ : ν¨μ λ΄λΆμ new.targetμ undefined
λ₯Ό κ°λ¦¬ν¨λ€.
IE μ κ°μ΄ new.targetμ μ§μνμ§ μλ λΈλΌμ°μ νκ²½μμ, μμ±μ ν¨μλ₯Ό 보μ₯νλ λ°©λ²μ΄λ€.
μ€μ½ν μΈμ΄ν μμ±μ ν¨ν΄μ λλΆλΆμ λΉνΈμΈ μμ±μ ν¨μμ λν΄μλ μ μ©λμ΄, new μ°μ°μμ ν¨κ» νΈμΆλμλμ§λ₯Ό νμΈ ν μ μ ν κ°μ λ°νμν¨λ€.
λ¨, μμνμ
μ λΉνΈμΈ μμ±μ ν¨μ( Number, String, Boolean
) μ λν΄μλ μ΄λ₯Ό 보μ₯νμ§ μκ³ , μμ κ°μ λ°ννκΈ°λ νλ€.
λ¨Όμ μμ±μ ν¨μμ μν μ λ€μκ³Ό κ°λ€.
[νμ] νλ‘νΌν° κ΅¬μ‘°κ° λμΌν μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° μν ν νλ¦Ώ(ν΄λμ€)λ‘μ λμνμ¬ μΈμ€ν΄μ€λ₯Ό μμ±
[μ΅μ ] μμ±λ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ν(μΈμ€ν΄μ€ νλ‘νΌν° μΆκ° λ° μ΄κΈ°κ° ν λΉ)
new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ₯Ό νΈμΆνλ©΄, μλ°μ€ν¬λ¦½νΈ μμ§μ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³ μ묡μ μΌλ‘ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°νν ν μ묡μ μΌλ‘ μΈμ€ν΄μ€λ₯Ό λ°ννλ€.
λ°νμ μ΄μ μ μ묡μ μΌλ‘ λΉ κ°μ²΄κ° μμ±λλ€.
λΉ κ°μ²΄ : μμ§μ λ―Έμμ±λ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€
μ΄ λΉ κ°μ²΄(μΈμ€ν΄μ€)λ thisμ λ°μΈλ©λλ€.
λ°λΌμ, μμ±μ ν¨μ λ΄λΆμ thisκ° μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν΄
π§ λ°μΈλ©μ΄λ?
μλ³μμ κ°μ μ°κ²°νλ κ³Όμ
λ³μ μ μΈ : λ³μ μ΄λ¦(μλ³μ)μ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό λ°μΈλ©νλ κ²
this λ°μΈλ© : thisμ thisκ° κ°λ¦¬ν¬ κ°μ²΄λ₯Ό λ°μΈλ©
μμ±μ λͺΈμ²΄μ κΈ°μ λμ΄ μλ μ½λκ° ν μ€μ© μ€νλλ©°, thisμ λ°μΈλ©λμ΄ μλ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ€.
thisμ λ°μΈλ©λμ΄ μλ μΈμ€ν΄μ€μ νλ‘νΌν°λ λ©μλλ₯Ό μΆκ°νκ³
μμ±μ ν¨μκ° μΈμλ‘ μ λ¬λ°μ μ΄κΈ°κ°μ μΈμ€ν΄μ€ νλ‘νΌν°μ ν λΉνμ¬ μ΄κΈ°ννκ±°λ κ³ μ κ° ν λΉ
μμ±μ ν¨μ λ΄λΆμμ λͺ¨λ μ²λ¦¬κ° λλλ©΄, μμ±λ μΈμ€ν΄μ€κ° λ°μΈλ©λ thisλ₯Ό μ묡μ μΌλ‘ λ°ννλ€.
λ§μ½ μ묡μ μΌλ‘ thisλ₯Ό λ°ννλ λμ ,
λ€λ₯Έ κ°μ²΄λ₯Ό λͺ μμ μΌλ‘ λ°νν κ²½μ°, returnλ¬Έμ λͺ μν κ°μ²΄κ° λ°νλλ€.
λν λͺ μμ μΌλ‘ μμ κ°μ λ°ννλ©΄, μμ κ° λ°νμ 무μλκ³ μ묡μ μΌλ‘ thisκ° λ°νλλ€.