2016년 3월 26일 토요일

[javascript] this



this 가 쓰인 경우는 객체의 메소드일반 함수에서로 나뉜다.

1. 객체의 메소드에서 사용한 this 호출한 객체를 가리킨다. 


var obj1 = {
   name : 'obj1', 
    myfunc : function() {
           alert(this.name);
    }
}

var obj2 = {
     name : 'obj2',
     myfunc : obj1.myfunc
}

obj1.myfunc(); // obj1
obj2.myfunc(); // obj2

obj2.myfunc() 에서 myfunc()를 호출한 객체가 obj2 이므로

this.name은 obj2.name이 된다.

2. 일반 함수에서의 this 사용은 전역 객체에 바인딩된다.

이때 주의할 점은 내부 함수의 호출 시 this 는 부모 함수를 가리키는 게 아니라
전역 객체에 바인딩된다는 것이다.

따라서, 객체의 메소드에서 내부 함수를 사용할 경우 this 를 사용해도
객체의 프로퍼티를 가리키지 않는다.

객체의 메소드의 내부 함수에서 객체의 프러포티를 참조하게 하기 위해서
메소드에서 that 이라는 변수를 둬서 this를 저장한 후에, 내부 함수에서 that을 다가가는 방법을
사용한다.





댓글 없음:

댓글 쓰기