Почему «я» и «это» не определены, когда setTimeout вызывает анонимный обратный вызов?
var gMyObj = new MyObj();
gMyObj.myFunc();
function MyObj() {
this.myFunc = function () {
var me = this;
alert(me.constructor); // defined
setTimeout(function(me) {
alert(me.constructor); // undefined
}, 100);
};
}
Разрешение: выбранный ответ правильный, спасибо. Мой вопрос заключался в упрощении реальной проблемы, с которой я столкнулся. Оказалось, что jQuery изменяет «this» внутри метода click (), чтобы он указывал на соответствующий элемент DOM. Я создал новую переменную «me» для хранения «this» и пытался передать ее методу click. Все, что мне нужно было сделать, это просто использовать «я» внутри события click и позволить закрытию сохранять ссылку на него. Передача 'me' в click () не удалась по той же причине, что и в этом примере, а именно click () не ожидала этого.