Этот вопрос относится не только к 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
является другой псевдопеременной, которая должна обрабатываться таким же образом & mdash; по псевдонимам.