setTimeout中的this

 

var f  = function(){
     this.fname = 'F Function';
};

//invoke from bar and bar2 func
f.prototype.sayName = function(){
     alert(window == this); // when  invoke from bar then true, bar2 then false

     alert(this.fname); //when invoke from bar then 'undefined', bar2 then 'F Function'
};

//invoke sayName func in setTimeout
f.prototype.bar = function(){
     setTimeout(this.sayName,1000);

     // or
     //var that = this;
    //setTimeout(that.sayName,1000); alert(window == this) remain show false in sayName fun
};

//invoke sayName func in setTimeout
f.prototype.bar2 = function(){
    var that = this;
    setTimeout(function(){that.sayName()},1000)
}

var ins = new f();
ins.bar(); //true 'undefined'
ins.bar2(); // false 'F Function'

 

 

以上例子能解释 this 在setTimeout 中的 含义。

 

原因(https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout#The_%27this%27_problem):

 




 

 

你可能感兴趣的:(settimeout)