this是javascript的一个重点概念,也是一个不大不小的难点,它的指向问题往往会给很多初学者带来很大的困扰。

下面就通过代码实例介绍一下this到底是指向谁,希望能够给需要的朋友带来一定的帮助。

在介绍this之前我们先直接给this的指向下个结论:this永远指向调用它所在函数的对象。
   [ bootstrap ] 运行代码    下载代码
<script>
var antzone="51前端";
function done(){
  console.log(this.antzone)
}
done()
</script>
上面的代码的输出值为"蚂蚁部落",下面介绍一下原因:

在<script></script>标签根下定义的变量和函数可以认为是为window对象添加的属性或者方法,所以var antzone="蚂蚁部落"相当于window.antzone="蚂蚁部落",函数也是同样的道理,看如下代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var antzone="51前端";
function done(){
  console.log(this.antzone)
}
console.log(window.antzone==antzone);
console.log(window.done==done);
</script>
所以done()函数的执行就相当于window.done(),那么调用此函数的对象就是window,this也就指向window,this.antzone也就相当于window.antzone,所以输出内容为"蚂蚁部落"。再来看一段代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var obj=new Object();
obj.antzone="分享互助";
var antzone="51前端";
function done(){
  console.log(this.antzone)
}
obj.func=done;
done();
obj.func();
</script>
上面代码的输出值分别是"蚂蚁部落"和"分享互助"。

done()函数的调用对象是window,那么this指向window。

obj.func=done是将函数done赋值给obj对象的一个属性,也就是说obj.func属性存放的是指向done函数对象的引用,所以obj.func()就是obj对象调用此函数,那么this就是指向obj的。再来看一段代码实例:
   [ bootstrap ] 运行代码    下载代码
<script>
var antzone="51前端"
function a(){
  function b(){
    console.log(this.antzone)
  }
  b()
}
a()
</script>

代码描述:javascript this用法。javascript this用法代码下载



155 206



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



×
×
51前端

注册

×
绑定手机

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

×
单次下载支付

应付金额:279

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

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

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

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