本章节介绍一下为什么在某些场景下this会指向全局的window对象。

当然this在setTimeout()中的指向并不是都是window对象,而是在一些情况下,看起来是指向某个对象,但实际上是指向window的,下面就通过代码实例分析一下此种情况,代码如下:
   [ bootstrap ] 运行代码    下载代码
<script>
var str="全局";
var obj={
  str:"对象",
  func:function(){
    setTimeout(this.test,1000);
  },
  test:function(){
    console.log(this.str);
  }
}
obj.func()
</script>
上面代码的输出结果是"全局",这说明test函数中的this指向是全局对象。

之所以这样,是因为上面的代码等效于如下代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var str="全局";
var obj={
  str:"对象",
  func:function(){
        var done=this.test
    setTimeout(done,1000);
  },
  test:function(){
    console.log(this.str);
  }
}
obj.func()
</script>

代码描述:js函数中 this指向全局对象window。js函数中this指向全局对象window源码实例



146 194



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到