Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   setInterval внутри обьекта (https://javascript.ru/forum/css-html/48274-setinterval-vnutri-obekta.html)

Jekel 27.06.2014 13:58

setInterval внутри обьекта
 
Вопрос №1

Чего this._timerBeep() выполняется только один раз?
var Module = sys.Class.extend({

    _init: function() {
        console.log('_init!');
        setInterval(this._timerBeep(), 1000);
    },

    _timerBeep: function(){
        console.log('_timerBeep!');
        this.update();
        this.draw();
    },

    update: function() {
        console.log('update!');
    },

    draw: function(){
        console.log('draw!');
    }

});

Module2 = Module.extend();
new Module2();


Console log:

_init!
_timerBeep!
update!
draw!

Вопрос №2

Как this передать в анонимную функцию...сделать что-то типа этого..

var Module = sys.Class.extend({

    _init: function() {
        console.log('_init!');
        setInterval(function(){
                console.log('_timerBeep!');
                this.update();
                this.draw();
            }, 1000);
    },

    update: function() {
        console.log('update!');
    },

    draw: function(){
        console.log('draw!');
    }

});

Module2 = Module.extend();
new Module2();


Console log:

_init!

_timerBeep!
TypeError: this.update is not a function
this.update();

_timerBeep!
TypeError: this.update is not a function
this.update();

_timerBeep!
TypeError: this.update is not a function
this.update();

WorM32 27.06.2014 14:35

Ответ на оба вопроса.

Заменить setInterval(this._timerBeep(), 1000);
На setInterval(this._timerBeep.bind(this), 1000);

Jekel 27.06.2014 16:39

Ты такой молодец :) спасибо тебе

wasa 29.06.2014 15:14

уровень безграмотности на форуме просто зашкаливает.
народ даже справочник не читает по функциям.


Часовой пояс GMT +3, время: 22:36.