Установка правильного значения в requestAnimationFrame

У меня есть конструктор app-объекта, который выглядит так:

var app = function(loadedsettings) {

    return {
        init: function() {          
            this.loop();
        },

        loop: function() {
            this.update();
            window.requestAnimationFrame(this.loop);
        },

        update: function() {
            //loop through settings and call update on every object.
        },

        settings: [
             //array of settings objects, all with update methods. 
        ]
    };
}

Затем, когда я делаю:

var theApp = app(settings);
theApp.init();

Я получил:

Uncaught TypeError: Object [object global] has no method 'update'

потому что когда вызывается requestAnimationFrame, this-value внутри функции цикла устанавливается в window.

Кто-нибудь знает, как вызвать requestAnimatinFrame с объектом 'theApp', установленным как this-значение?

Ответы на вопрос(2)

Ваш ответ на вопрос