Теряется this между функциями

Рейтинг: 0Ответов: 1Опубликовано: 22.02.2015

Добрый вечер!

Есть две функции, одна создает объект с параметрами для роботы, вторая работает с этими параметрами и выполняет определение действия (в данном случае рекурсивно выполняется каждую секунду). Все хорошо. Проблема лишь в том, что значение this теряется, а точнее стает равно window.

О чем я говорю, хорошо видно на примере jsfiddle.

Ну и вот, собственно, код:

   $(document).ready(function(){
    function create(arr){
    arr.start = start;
    return arr; 
    }

    start = function(){
        alert(this);
        if(this.speed){
            setTimeout(this.start, this.speed);
        }
    }

    Obj=create({speed: 1000});
    Obj.start();

    });

Ответы

▲ 2Принят

Можно это так поправить:

setTimeout(this.start.bind(this), this.speed);