πΎ 22.1 this ν€μλ
μμ±μ ν¨μλ₯Ό μ μνλ μμ μλ μμ§ μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° μ΄μ μ΄λ―λ‘,
μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μλ³μλ₯Ό μ μ μλ€.
λ°λΌμ μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ νΉμν μλ³μκ° νμνλ€.
=> this μ 곡
this
: μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μκΈ° μ°Έμ‘° λ³μ.
: this λ₯Ό ν΅ν΄ μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€μ νλ‘νΌν°λ λ©μλλ₯Ό μ°Έμ‘°ν μ μμ.
- JS μμ§μ μν΄ μ묡μ μΌλ‘ μμ±λ¨
- thisκ° κ°λ¦¬ν€λ κ°, μ¦ this λ°μΈλ©μ ν¨μ νΈμΆ λ°©μμ μν΄ λμ μΌλ‘ κ²°μ λ¨.
this λ°μΈλ©
this μ this κ° κ°λ¦¬ν¬ κ°μ²΄, μ¦, μλ³μμ κ°μ μ°κ²°νλ κ².
this λ κ°μ²΄μ νλ‘νΌν°λ λ©μλλ₯Ό μ°Έμ‘°νκΈ° μν μ©λλ‘ μ¬μ©λλ―λ‘
-> strict mode μ¬μ© μ
μΌλ° ν¨μ λ΄μμ undefinedκ° λ°μΈλ©λ¨.
πΎ 22.2 ν¨μ νΈμΆ λ°©μκ³Ό this λ°μΈλ©
this λ°μΈλ©μ ν¨μ νΈμΆ λ°©μμ μν΄ λμ μΌλ‘ κ²°μ λ¨.
π λ μ컬 μ€μ½νμ this λ°μΈλ©μ κ²°μ μκΈ°κ° λ€λ₯΄λ€.
ν¨μμ μμ μ€μ½νλ₯Ό κ²°μ νλ λ°©μμΈ λ μ컬 μ€μ½νλ
ν¨μ μ μκ° νκ°λμ΄ ν¨μ κ°μ²΄κ° μμ±λλ μμ μ μμ μ€μ½νλ₯Ό κ²°μ ν¨.
this λ°μΈλ©μ ν¨μ νΈμΆ μμ μ κ²°μ λ¨.
ν¨μ νΈμΆ λ°©μ
22.2.1 μΌλ° ν¨μ νΈμΆ
κΈ°λ³Έμ μΌλ‘ thisμλ μ μ κ°μ²΄κ° λ°μΈλ©λ¨.
νμ§λ§ μΌλ°ν¨μμμ this λ μλ―Έκ° μμ.
μΌλ° ν¨μλ μ€μ²©ν¨μ, μ½λ°±ν¨μ λ± μΌλ°ν¨μλ‘ νΈμΆλλ λͺ¨λ ν¨μλ₯Ό λ»ν¨.
22.2.2 λ©μλ νΈμΆ
λ©μλμ λ΄λΆμ thisλ λ©μλλ₯Ό μμ ν κ°μ²΄κ° μλ, λ©μλλ₯Ό νΈμΆν κ°μ²΄μ λ°μΈλ©λ¨.
22.2.3 μμ±μ ν¨μ νΈμΆ
μμ±μ ν¨μ(new μ°μ°μλ νΈμΆνλ) λ΄λΆμ this μλ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€κ° λ°μΈλ©λλ€.
22.2.4 Function.prototype.apply/call/bind λ©μλμ μν κ°μ νΈμΆ
μλ€λ Function.prototype μ λ©μλλ€.
μ¦, μ΄λ€ λ©μλλ λͺ¨λ ν¨μκ° μμλ°μ μ¬μ©ν μ μλ€.
applyμ call : ν¨μλ₯Ό νΈμΆνλ κ²μ΄ λ³Έμ§μ μΈ κΈ°λ₯.
bind : ν¨μλ₯Ό νΈμΆνμ§ μμ. λμ 첫λ²μ§Έ μΈμ => this λ°μΈλ©μ΄ κ΅μ²΄λ ν¨μλ₯Ό μλ‘κ² μμ± & λ°ν
μΈλΆ ν¨μλ₯Ό λ©μλμ μ½λ°±ν¨μλ‘ λ°λ κ²½μ° -> μΌλ° ν¨μ λ΄μ this λ₯Ό window λ‘ μΈμ
=> μ½λ°± ν¨μμ λ΄λΆμ μΈλΆ ν¨μμ λ΄λΆμ this λ₯Ό μΌμΉν€μΌμΌν¨.
callback.bind(this)
'λ μ λͺ©λ‘ > λͺ¨λ₯λ€ Modern JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λͺ¨λ₯λ€] 24μ₯ ν΄λ‘μ (0) | 2023.05.16 |
---|---|
[λͺ¨λ₯λ€] 23μ₯ μ€ν 컨ν μ€νΈ (0) | 2023.05.16 |
[λͺ¨λ₯λ€] 21μ₯ λΉνΈμΈ κ°μ²΄ (0) | 2023.05.14 |
[λͺ¨λ₯λ€] 20μ₯ Strict Mode (0) | 2023.05.13 |
[λͺ¨λ₯λ€] 19μ₯ (2) νλ‘ν νμ (0) | 2023.05.13 |