setTimeout中所执行函数中的this,永远指向window

Posted lele

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setTimeout中所执行函数中的this,永远指向window相关的知识,希望对你有一定的参考价值。

注意是要延迟执行的函数中的this哦!!

//片段一
setTimeout("alert(this)", 1);   // [object Window]

//片段二
var obj = {
  say: function() {
    setTimeout("alert(‘in obj ‘ + this)", 0)
  }
}
obj.say(); 

//片段三
var obj = {
  say: function() {
    setTimeout(function(){alert(this)}, 0)
  }
}
obj.say(); 

//片段四
function talk() {
  alert(this);
}
 
var obj = {
  say: function() {
    setTimeout(talk, 0)
  }
}
 
obj.say(); 

 

以上是关于setTimeout中所执行函数中的this,永远指向window的主要内容,如果未能解决你的问题,请参考以下文章

关于this的指向

JavaScript 类中的 setTimeout() 使用“this”

闭包应用之延迟函数setTimeout

setTimeout中第一个参数

在js对象的方法里有setTimeout函数,在setTimeout里怎么调用该对象方法,用this没有用

关于setInterval和setTImeout中的this指向问题