Нет, это не так. Вы хотите сделать это:
this.initiate = function() {
setTimeOut(objInstance.afterTimeOut,1000); //using the objects global handle
}
Теперь, если для "afterTimeout" нужен правильный контекст объекта, вы можете сделать это:
this.initiate = function() {
var instance = this;
setTimeout(function() { instance.afterTimeOut(); }, 1000);
}
Хорошо, вы значительно изменили вопрос с этим небольшим редактированием :-) На вашем месте, я бы просто сделал это (как мой оригинальный второй пример):
this.initiate = function() {
var instance = this;
setTimeout(function() { instance.afterTimeOut(); }, 1000);
}
Тогда вам вообще не нужны ужасные глобальные переменные.
изменить & mdash; Пользователь @Christoph из Stackoverflow отмечает, что это не очень красиво. Одной вещью, которая может помочь, было бы использование средства «связывания», предоставляемого изначально новыми браузерами (как метод в прототипе Function) или некоторыми библиотеками (например, Prototype или Functional). То, что «связывание» позволяет вам сделать, - это создать небольшую функцию-обертку, как я описал выше:
this.initiate = function() {
setTimeout(this.afterTimeOut.bind(this), 1000);
}
Этот вызов "bind" возвращает функцию, которая по сути является той же вещью, что и маленькая оболочка, которую я явно закодировал в примере.