setInterval with(this)

Dan*_*res 3 javascript setinterval

请有人在setInterval函数的末尾解释一下(this)的含义是什么:

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)

      }
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 9

采用this的结构是为了维持的意义this在点setInterval被调用实际回调是在给定的时间间隔执行.没有手动保存this就会成为该功能的所有者setInterval.

这是一篇关于这个主题的非常好的文章

另一种可以做得更清楚的方法如下

var self = this
this.handle = setInterval(function() { alert(self.Name); }, 5000);
Run Code Online (Sandbox Code Playgroud)

  • @dnielF是的,只要它具有`name`属性,就可以在那里使用任何值而不是`this` (2认同)