this
thisλ ν¨μ λ΄μμ νΈμΆ λ§₯λ½(context, κ°λ³μ μ΄λ€)μ μλ―Ένλ€. thisλ ν¨μ μμμλ§ μ¬μ©κ°λ₯νλ©° μ½μλ λ³μμ΄λ€.
ν¨μκ° μ΄λμ μμλμ΄ μλμ§κ° μ€μνλ€
ν¨μμμμ thisμ μλ―Έ
첫λ²μ§Έμμ
function func(){
if(window === this){
return "window === this";
}
}
console.log(func());
μ¬κΈ°μ this λ μλμ°λ€
λ©μλμ νΈμΆ
λλ²μ§Έμμ
var o = {
func: function(){
if(o === this){
return "o === this";
}
}
}
console.log(o.func());
o.func()μ thisλ oλ₯Ό κ°λ₯΄ν¨λ€.
μ μκ°μ²΄, μ μλ©μλλ windowκ° μλ΅λμ΄ μλ€. 첫λ²μ§Έ μμμ thisλλ©μλκ° μμλμ΄ μλ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. λλ²μ§Έ μμλ oμ μμμ΄κΈ° λλ¬Έμ oλ₯Ό κ°λ¦¬ν¨λ€.
κ·Έλμ ν¨μμ νΈμΆκ³Ό λ©μλμ νΈμΆμ λ€λ₯Έκ² μλ€. λλ€ μμλ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ μλλ° μλ΅λμ΄ μλμ§ μλμ§μ μ°¨μ΄λ€.
μμ±μμ this
var funcThis = null;
function Func(){
funcThis = this;
}
var o1 = Func();
if(funcThis === window){
console.log('window');
};
var o2 = new Func();
if(funcThis === o2){
console.log('o2');
};
o1λ window.Func()κ° μλ΅λ κ²μ΄λ―λ‘ window λ€
o2λ newλ₯Ό λΆμ¬ Func();λ₯Ό μ€ννκΈ° λλ¬Έμ μλ°μ€ν¬λ¦½νΈλ λ΄λΆμ μΌλ‘ λΉμ¬μλ κ°μ²΄λ₯Ό λ§λ€κ³ λΉμ¬μλ κ°μ²΄κ° μμ±μ μμμ thisκ° λλ€.
μλ‘ μμ±λλ κ°μ²΄κ° μμ±μ μμμ thisκ° λλ€.
new Func(); κ° λ€ μ€νλ ν var o2μ λ΄κΈ΄λ€.
var funcThis = null;
function Func(){
if(o2 === this){
funcThis = this;
}
}
var o2 = new Func();
if(funcThis === o2){
console.log('o2');
};
κ·Έλ κΈ° λλ¬Έμ Func()ν¨μμμ if (o2 === this) .. λΌκ³ λ°λ‘ μΈ μ μλ€. funcμμμ ν κ²½μ° μμ§ o2λΌλ κ°μ²΄μ λ΄κΈ°κΈ° μ μ μ€νλκΈ° λλ¬Έμ o2λ undefinedκ° λλ€.
κ°μ²΄μ λν μ΄κΈ°νκ° λλ ν, μ΄λ€ μλ³μμ λ΄κΈ°κΈ° μ μ κ·Έ κ°μ²΄λ₯Ό μ°Έκ³ ν μ μλ reference ??
function Func(){
this.area = function(){
if(o2 === this){
return 'o2 === this';
}
}
}
var o2 = new Func();
o2.area(); //'o2 === this';
νμ§λ§ μ΄λ°μμΌλ‘ νμ κ²½μ°μ 'o2 === this'; κ° return λλ€.
applyμ this
ν¨μλ κ°μ²΄λ€
μμ1 - sumμ΄λΌλ ν¨μκ°μ²΄ λ§λ€κΈ°
function sum(x,y){
return x + y;
}
sum(1,2); //3
μμ2
var sum2 = new Function('x','y','return x + y;');
sum(1,2); //3
newλ₯Ό ν΅ν΄μ Functionμ΄λΌλ μ΄λ¦μ μμ±μ ν¨μλ₯Ό λ§λ κ²μ΄λ€. 첫λ²μ§ΈμΈμ x, λλ²μ§ΈμΈμ 'y'λ νλΌλ―Έν°(λ§€κ°λ³μ)λ₯Ό μλ―Ένκ³ λ§μ§λ§ μΈμλ ν¨μμ λ³Έλ¬Έμ ν΄λΉλλ€.
μμ2μ²λΌ μμ±νλκ²μ λλ¨ν λΆνΈνλ€. νΉν μμ2μ λ§μ§λ§ μΈμμ²λΌ λλ¨ν κΈ΄λ΄μ©μ΄λ©΄ λλμ± λΆνΈν κ²μ΄λ€.
μμ1μ²λΌ μμ±νλ©΄ μλ°μ€ν¬λ¦½νΈ ν΄μκΈ°κ° ν¨μ κ°μ²΄λ‘ λ§λ€μ΄ μ£Όλ κ²μ΄λ€. ->ν¨μ 리ν°λ΄(Literal).
리ν°λ΄(Literal)
//κ°μ²΄ 리ν°λ΄
var o = {}
//ν¨μ 리ν°λ΄
var arr = {}
new Object λ new Arrayλ‘ λͺ μμ μΌλ‘ λ§λ€ μ μμ§λ§ 리ν°λ΄ λ°©μμ΄λΌκ³ νΈλ¦¬νκ² λ§λ€ μ μκ²νλ€.
var o = {};
var p = {};
function func(){
switch(this){
case o:
console.log('o');
break;
case p:
console.log('p');
break;
case window:
console.log('window');
break;
}
}
func(); //'window'
func.apply(o); //'o'
func.apply(p); //'p'
funcλ κ°μ²΄μ΄κΈ° λλ¬Έμ νλ‘νΌν°μ λ©μλλ₯Ό κ°μ§ μ μλ€. applyμ 첫λ²μ§Έ μΈμλ‘ ν¨μ νΈμΆ 컨ν μ€νΈ(context,λ§₯λ½,κ°λ³μ μ΄λ€.)λ₯Ό λμ νλ€.
μ ν΅μ μΈ κ°μ²΄μ§ν₯μμ λ©μλλΌλ κ²μ κ°μ²΄μ κ°νκ² μμλμ΄ μλ€. νμ§λ§ μλ°μ€ν¬λ¦½νΈλ μ μ°νλ€.

applyλ₯Ό μ΄μ©ν΄ νΈμΆ νλ ν¨μ func()λ pμ λ©μλλ λκ³ oμ λ©μλλ λλ€. κ°μ²΄μ ν¨μλ λ§€μ° λλ±νλ€. μλλ©΄ ν¨μλ κ°μ²΄μ΄κΈ° λλ¬Έμ΄λ€. ν¨μλ₯Ό μ΄λ»κ² νΈμΆνλ
κ° ν¬μΈνΈλ€. μ΄λ»κ² νΈμΆνλμ λ°λΌ μ΄λ€ κ°μ²΄μ μ’
μλμλμ§κ° λ¬λΌμ§λ€.
thisλ λ³ν무μνλ€. ν¨μκ° μ΄λμ μμλμ΄ μλμ§κ° μ€μνλ€. μλ°μ€ν¬λ¦½νΈλ μ μ°νλ€.
Last updated
Was this helpful?