javascript this

 
 
 

■ 참조
[난해한 Javascript 개념] ‘this’ 키워드의 의미
자바스크립트의 ‘this’ 키워드 이해하기
 
 
 

■ javascript this?
– this는 객체의 owner혹은 context(문맥)을 가리킨다.
 
 
 

■ 이 context(문맥?)의 소유자는 누구인가? window이다.

console.log(this);     // window

 
 
 

■ foo()함수의 소유자는 누구인가? window이다.

function foo() {
    console.log(this);
}
window.foo();     // window
this.foo();       // window

 
 
 

■ foo 함수의 this이므로 this는 goo를 가리킨다. foo함수의 owner는 goo이므로 goo가 this이다.
크롬 콘솔에서는 ‘▶{foo: f}’라고 표시된다.

var goo = {
    foo : function() {
        console.log(this);
    }
}
goo.foo();     // goo

 
 
 

■ call()함수와 apply()함수는 변경하려는 owner를 첫번째 인자로 가지는 것은 유사하나 call은 인자를 나열하는 방식이고, apply는 배열로 전체 인자를 대체하는 방식이다.

var goo = {
    foo : function(one, two, three) {
        console.log(this);
        console.log(one+two+three);
    }
}
var xx = {
     yy : function() {
          console.log(this);    // 실행되지 않음
     }
}

goo.foo(1,2,3);                 // goo, 6
goo.foo.call(xx, 1,2,3);        // xx, 6
goo.foo.apply(xx, [1,2,3]);     // xx, 6
goo.foo.call(window, 1,2,3);    // window, 6
goo.foo.apply(window, [1,2,3]); // window, 6

 
 
 

■ bind는 owner를 바꾼 ‘함수’를 리턴하는 것이다.(?)

var goo = {
    foo : function(x) {
        console.log(this);
        console.log(x);
    }
}
var binded = goo.foo.bind(window);

goo.foo(1);    // goo, 1
binded(2);     // window, 2
goo.foo(3);    // goo, 3

 
 
 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다