중첩 된 함수 시나리오에서 "this"포인터가 어떻게 처리되는지에 대한 질문이 있습니다.
다음 샘플 코드를 웹 페이지에 삽입한다고 가정 해 보겠습니다. 중첩 함수 "doSomeEffects ()"를 호출 할 때 오류가 발생합니다. Firebug에서 확인한 결과 중첩 된 함수에있을 때 "this"포인터가 실제로 전역 "window"개체를 가리키고 있음을 나타냅니다. 객체의 함수 내에서 중첩 된 함수를 선언했기 때문에 뭔가를 올바르게 이해하고 있지 않아야합니다. 함수와 관련하여 "로컬"범위를 가져야합니다 (즉, "this"포인터는 다음과 같이 객체 자체를 참조 할 것입니다). 내 첫 "if"문에서 어떻게되는지).
모든 포인터 (말장난 의도 없음)를 주시면 감사하겠습니다.
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
this
함수가 호출되는 객체를 나타냅니다.
var self = this;
참조 할 수 self
있습니다.
doSomeEffects
특히 obj와 관련이 없으므로 this
모든 요소의 어머니 인 창이라고 가정합니다.