- This λ μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μκΈ° μ°Έμ‘° λ³μ (self-referencing variable) μ λλ€. λ°λΌμ this λ₯Ό ν΅ν΄ μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€μ νλ‘νΌν°λ λ©μλλ₯Ό μ°Έμ‘° ν μ μκ² λ©λλ€.
- This λ μ€μ λ‘ ν¨μ νΈμΆ μμ (λ°νμ)μ κ²°μ λλ©°, 무μμ κ°λ¦¬ν¬μ§λ μ μ μΌλ‘ ν¨μλ₯Ό νΈμΆν μ½λμ λ¬λ €μμ΅λλ€.
μ¦ This λ ν¨μ μ체λ₯Ό κ°λ¦¬ν€κ±°λ, ν¨μμ λ μ컬 μ€μ½νλ₯Ό κ°λ¦¬ν€μ§ μμ΅λλ€. This λ ν¨μ νΈμΆ λ°©μμ λ°λΌμ λμ μΌλ‘ κ²°μ λκΈ° λλ¬Έμ, ν¨μ μ μΈ μμ μλ this κ° λ¬΄μμΌμ§ μ μ μμ΅λλ€.
this λ μλ°μ€ν¬λ¦½νΈμμ 'νΈμΆ 주체'λ₯Ό μ°ΎκΈ° μν΄μ νμνλ€κ³ μκ°ν©λλ€.
function identify() {
return this.name;
}
function speak() {
const greeting = `μλ
λλ ${identify.call(this)}`;
console.log(greeting);
}
const coach1 = {
name: "ν¬λΉ",
};
const coach2 = {
name: "곡μ",
};
speak.call(coach1); // μλ
λλ ν¬λΉ
speak.call(coach2); // μλ
λλ 곡μμμ κ°μ μ½λμμ this κ° μλ€λ©΄ μΌμΌμ΄ context λ₯Ό νλΌλ―Έν°λ‘ λ겨μ€μΌ ν©λλ€.
function identify(context){
return context.name;
}
function speak(context){
const greeting = `μλ
λλ ${identify(context)}`;
console.log(greeting);
}
const coach1 = {
name: "ν¬λΉ";
}
const coach2 = {
name: "곡μ";
}
speak(coach1); // μλ
λλ ν¬λΉ
speak(coach2); // μλ
λλ 곡μμ¦ this λ₯Ό ν΅ν΄μ ν¨μκ° μ μ νκ² νμ¬ μ€νμ€μΈ κ°μ²΄λ₯Ό μλμΌλ‘ μ°Έμ‘°νκ² λ©λλ€.
- κΈ°λ³Έλ°μΈλ©μ μ무κ²λ νμ§ μμμ λ μ μκ°μ²΄κ° λ°μΈλ©λλ κ²μ μλ―Έν©λλ€.
. μ ν΅ν΄μ νΈμΆλΆ κ°μ²΄μ λ°λΌμ λ°μΈλ©λ©λλ€.
call, apply, bind λ₯Ό ν΅ν΄μ λͺ
μμ μΌλ‘ μλ°μ€ν¬λ¦½νΈμκ² μ§μ this λ°μΈλ©μ λͺ
μν΄μ€ μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈμμ ν¨μ μμ new λ₯Ό λΆμ¬ μμ±μ νΈμΆμ νλ©΄ μλμ κ°μ μΌμ΄ μΌμ΄λ©λλ€.
- μ κ°μ²΄κ° λ§λ€μ΄ μ§λλ€.
- μλ‘ μμ±λ κ°μ²΄μ [[Prototype]]μ΄ μ°κ²° λ©λλ€.
- μλ‘ μμ±λ κ°μ²΄λ ν΄λΉ ν¨μ νΈμΆ μ, this λ‘ λ°μΈλ© λ©λλ€.
- μ΄ ν¨μκ° μμ μ λ λ€λ₯Έ κ°μ²΄λ₯Ό λ°ννμ§ μλ ν, new μ ν¨κ» νΈμΆλ ν¨μλ μλμΌλ‘ μλ‘ μμ±λ κ°μ²΄λ₯Ό λ°νν©λλ€. (μΈμ€ν΄μ€ λ°ν)
- μ¦,μμ±μ ν¨μλ‘μ νΈμΆ λ κ²½μ° λ΄λΆμμμ this λ κ³§ μλ‘ λ§λ€ ꡬ체μ μΈ μΈμ€ν΄μ€ μμ μ΄ λ©λλ€
- μ°μ μμλ new > λͺ μμ > μμμ μ΄ λ©λλ€.