function MadDog() {
    this.wow=function(){
....
}    this.yelp = function() {
        var self = this;//这里不明白
        setInterval(function() {
            self.wow();
        }, 500);
    }
}想请问下为什么要把this给self再调用方法而不是直接用this调用呢?

解决方案 »

  1.   

        因为this的作用是指向了当前执行的对象,是一个动态指针,它可以指向JS里的任何一个对象,而程序在执行过程中随时都可能会改变当前执行对象!
       举例:
    function MadDog() {
      this.wow=function(){
    ....
    }  this.yelp = function() { //假设现在的this是指向一个button按钮对象
      var self = this;//如果这里不保存那么到setInterval里以后可能就变成其他对象,可能是文本框或者其他
      setInterval(function() {
      self.wow(); //这里如果直接用this,执行环境就变成this.wow函数里的当前执行对象了。而不是一开始的button对象
      }, 500);
      }
    }
    为了保证激发的是我们想要的那个对象,所以做了我们保存了var self = this;也就是那个button对象!
      

  2.   

    +++
    function MadDog() {
      this.wow=function(){
    ....
    }  this.yelp = function() {
      var self = this;//这里不明白
      setInterval(function() {
      self.wow();
      this;//这里的this指的是window对象
      }, 500);
      }
    }
      

  3.   

    推荐阅读:
    Javascript中的this指针介绍
    Javascript中需要留意的”this”指针陷阱