this的指向

this的指向在不同的位置是不同的,但是,在学习过程中,this的指向问题一直是初学者的困扰,因为情况是多种多样的,通过短暂的记忆可能很快就忘却了,本篇文章将介绍一下如何理解着记忆,而不是'死记硬背'。

我先简略的概括一下,this在英文中是什么意思哪?这,这个的意思,在编程中我们通常把this称为当前对象,在这篇文章中,我们从始至终都要记得一句话:this永远指向,调用它的对象

1.首先,第一种情况,对象中的this,指向的是该对象obj

var obj = {
    a : function(){
        console.log(this);
    }
}
obj.a();

在这段代码中,我们看到了obj.a(),this处在a函数的内部,那到底是谁调用的a哪?显而易见是obj,那因为this永远指向,调用它的对象,所以最后的打印结果应该是obj。

2.普通模式,普通函数中的this指向顶级对象window

严格模式,普通函数中的this指向undefined

function fn() {
        console.log(this);
}
fn();

调用普通函数中的this,就相当于在整个window上调用fn函数,所以该this的指向应该是window。

3.有一点我们要注意,定时器内部的this永远指向window

setTimeout(function(){
   console.log(this);
 },1000)

最终出来的结果就是window

4.构造函数中的this指向实例出来的对象

 function Fn(name) {
            // 在构造函数当中  this指向 被实例出来的对象
            this.name = name
            console.log(this);
        }

 var p = new Fn('小明')

打印出来的结果就是Fn。

5.事件当中this指向当前绑定的元素

 document.querySelector('div').onclick=function() {
                console.log(this);
        }

打印出来的结果是<div></div>

总结一下,

        普通的函数this指向window

        构造函数当中的this指向了实例出来的对象

        对象中的方法this指向该方法所属的对象

        事件当中this指向当前绑定的元素

        定时器当中this指向window

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值