Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2009, 10:07
Аватар для maxval
Интересующийся
Отправить личное сообщение для maxval Посмотреть профиль Найти все сообщения от maxval
 
Регистрация: 01.10.2009
Сообщений: 15

вызов метода объекта в качестве аргумента setTimeout
Объвляю класс следующим образом

var Counter = function(min,sec,elem){
    this.elem = elem;
    this.countVal = Math.round(min*60) + Math.round(sec);
}

Counter.prototype.count = function() {
    this.countVal--;
    //this.printCounter();
    setTimeout("this.printCounter();",1000);
}

Counter.prototype.printCounter = function(){
       
    alert(this.countVal);
}



при этом закомментированный вызов функции count() выполнялся без проблем, а вот если передать вызов аргументом в setTimeout
setTimeout("this.printCounter();",1000);
вызова не происходит

соответственно в документе создание объекта осуществляю следующим образом

function startClock(){
		counter = new Counter(0,15,time);
		counter.count();

}


<input type="button" value="Запустить" onclick="startClock();">
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2009, 10:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Counter.prototype.count = function() {
    var that = this;
    this.countVal--;
    setTimeout(function() {
        that.printCounter();
    }, 1000);
}
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2009, 10:51
Аватар для maxval
Интересующийся
Отправить личное сообщение для maxval Посмотреть профиль Найти все сообщения от maxval
 
Регистрация: 01.10.2009
Сообщений: 15

спасибо !

как раз в эти минуты пришел к тому же выводу.

Counter.prototype.count = function() {
    this.countVal--;
    object = this;
    setTimeout(function() { object.printCounter.call(object)},1000);
}


проблема была в том, что при запуске setTimeout контекст this меняется на window

Последний раз редактировалось maxval, 05.10.2009 в 10:53.
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2009, 11:12
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/var Не надо пренебрегать.


Сообщение от maxval
object.printCounter.call(object)
Это то же самое, что и
object.printCounter()
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли использовать функции в качестве свойства абс_позиционируемого объекта Newgen Элементы интерфейса 1 27.07.2009 14:40
Можно ли использовать функцию в качестве свойства свободно позиционируемого объекта Newgen Общие вопросы Javascript 0 24.07.2009 23:02
AJAX, вызов из метода обьекта Logo Общие вопросы Javascript 4 20.06.2009 23:35
Передача объекта как аргумента в eval MyNameIs Общие вопросы Javascript 3 05.10.2008 16:20
Использование метода setTimeout News Общие вопросы Javascript 3 18.09.2008 20:37