这个问题不是特定于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
是否应该以相同的方式对待其他伪变量-通过别名。
self
因为有一个window.self
对象,你可能最终会使用意外,如果你忘了声明自己的self
变种(如中移动一些代码时)。这可能很烦人,无法发现/调试。最好使用这样的东西_this
。