이 질문은 jQuery에만 국한된 것이 아니라 일반적으로 JavaScript에만 해당됩니다. 핵심 문제는 임베디드 함수에서 변수를 "채널 화"하는 방법입니다. 이것은 예입니다 :
var abc = 1; // we want to use this variable in embedded functions
function xyz(){
console.log(abc); // it is available here!
function qwe(){
console.log(abc); // it is available here too!
}
...
};
이 기술은 클로저를 사용합니다. 그러나 그것은 작동하지 this
않기 때문에this
범위에서 범위로 동적으로 변경 될 수있는 의사 변수 .
// we want to use "this" variable in embedded functions
function xyz(){
// "this" is different here!
console.log(this); // not what we wanted!
function qwe(){
// "this" is different here too!
console.log(this); // not what we wanted!
}
...
};
우리는 무엇을 할 수 있습니까? 변수에 할당하고 별명을 통해 사용하십시오.
var abc = this; // we want to use this variable in embedded functions
function xyz(){
// "this" is different here! --- but we don't care!
console.log(abc); // now it is the right object!
function qwe(){
// "this" is different here too! --- but we don't care!
console.log(abc); // it is the right object here too!
}
...
};
this
이와 관련하여 고유하지 않습니다 arguments
. 앨리어싱 (aliasing)으로 같은 방식으로 처리해야하는 다른 의사 변수입니다.
self
가 있으므로 피해야 하며window.self
자신의self
var 선언을 잊어 버린 경우 (예 : 코드를 움직일 때) 실수로 사용할 수 있습니다 . 스팟 / 디버그가 성 가실 수 있습니다. 같은 것을 사용하는 것이_this
좋습니다.