2011-03-03 41 views
3

请,有人可以给我解释一下什么是(本)在函数中的setInterval结束的意思:的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) 

     } 

回答

9

构造中已使用的this意保留this的含义在setInterval处被调用,以给定间隔执行的实际回调。没有手动保存this将成为该功能的所有者在调用点setInterval

这里有一个关于这个问题一个很好的文章

另一种方式可以这样做可能会更清楚一点的是以下

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

感谢。我意识到'obj'被替换为'this',例如如果我在末尾放置另一个变量'(another)','obj'被解释为'另一个',这是否可行? – 2011-03-03 00:42:10

+2

@dnielF是的,只要它具有'name'属性,就可以使用任何值而不是'this' – JaredPar 2011-03-03 00:43:27