setInterval с (этим) - PullRequest
       17

setInterval с (этим)

3 голосов
/ 03 марта 2011

Пожалуйста, кто-нибудь может объяснить мне, что означает (this) в конце функции в setInterval:

function Klass(name) {
      this.name = name;
      this.handle = null;

      this.startTimer = function() {

        this.handle = setInterval(function(obj) {

          return(function() {
            alert(obj.name);
            });

          }(this), 5000); // <-------------------- (this)

      }

1 Ответ

9 голосов
/ 03 марта 2011

Использование this в конструкции предназначено для сохранения значения this в точке, в которую setInterval вызывается для фактического обратного вызова, который выполняется с заданным интервалом. Без сохранения вручную this стал бы владельцем функции в точке setInterval.

Вот очень хорошая статья на эту тему

Другим способом, который может быть немного понятнее, является следующий

var self = this
this.handle = setInterval(function() { alert(self.Name); }, 5000);
...