this的指向

本文详细介绍了JavaScript中this的指向规则,包括在全局作用域、普通函数、事件函数、定时器以及构造函数中的不同行为。this总是指向调用它的对象,这一原则在各种场景下有具体体现,例如在事件处理中this指向事件源,在定时器中则指向window对象。
摘要由CSDN通过智能技术生成

要了解this的指向问题必须了解两点:
1:this永远指向一个对象;
2:this的指向完全取决于函数调用的位置;


一、在全局作用域下的指向

    console.log(this);//指向window

二、在普通函数中谁调用就指向谁

 var obj = {
            fn1:function() {
                console.log(this); 
            },
            fn2:function(){
                fn3() //所以这里的调用指向与全局的指向一样
            }
        }
        function fn3() {
            console.log(this); //这里是在全局下的调用
        }
        fn3();//this->window
        obj.fn1();//this->obj
        obj.fn2();//this->window

三、在事件函数中指向事件源

单击后打印的就是这个给事件源绑定事件的它

var div = document.querySelector('div'); 
    div.addEventListener('click',function() {
        console.log(this); //this->div
    });
    
    div.onclick = function() {
    console.log(this) //this->div
    }

四、在定时器中的指向window

定时器就是window下的一个对象,所以指向的就是window

setInterval(function() {
        console.log(this); //this->window 
    },500)
    
    setTimeout(function() {
        console.log(this); //this->window 
    },500)

五、构造函数中指向实例化对象

function Obj(name,nan){
  this.name=name
  this.nan=function(){
    console.log(this);
  }
}

var obj_1=new Obj('名字','nan')
obj_1.nan();//==>obj_1

转载自CSDN博主「LoveyL0201」的原创文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值