Передача переменных изнутри объекта в setTimeout - PullRequest
3 голосов
/ 18 марта 2012

У меня есть некоторые интересные проблемы с передачей переменных изнутри объекта в setTimeout. Сначала я попытался поместить функцию, которую я вызывал из setTimeout, на мой объект, чтобы мне не пришлось передавать в него какие-либо переменные (я надеялся, что он сам сможет получить доступ к моему объекту). Это не сработало, по-видимому, потому что функция как-то стала глобальной, когда я вызвал ее из setTimeout, и больше не имел доступа к переменным моего объекта.

Это была моя следующая попытка, но она тоже не работает:

function MyObj() {
    this.foo = 10;
    this.bar = 20;
    this.duration = 1000;

    setTimeout(function(){
        AnotherFunction(this.foo, this.bar)
    }, this.duration);
}

Итак, как именно я могу передать переменную в setTimeout изнутри объекта? Нет, AnotherFunction не сможет напрямую получить доступ к MyObj по разным не связанным причинам, так что об этом тоже не может быть и речи.

1 Ответ

7 голосов
/ 18 марта 2012

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

function MyObj() {
    var that = this;
    this.foo = 10;
    this.foo = 20;
    this.duration = 1000;

    setTimeout(function(){AnotherFunction(that.foo, that.bar)}, this.duration);
}

Или у меня есть еще одна идея, если это не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...