this的指向总结

this的英语意思就是“这个”,可以把他给汉译一下就很好理解了。

但是因为是代码, 就会this指代的可能情况就多了一些,就不知道指向谁,这个this就代表谁了。
亘古不变的规则就是:当前函数的执行对象 。 指向的是对象。

打印this就能得到当前函数

let obj = {
        name:"admin",
        like:"ball",
        show:function(){
            console.log(this)
        }
    }

{name: “admin”, like: “ball”, show: ƒ}这个就是obj了,记住规则判断就好了。

2.当函数没有明确隶属对象的时候,这个时候this指的一般就是window,原理是因为,你没有指定,所以就找最大的对象,也就是window咯。(这种情况也叫默认绑定)****
比如这样:

<script>
		function fn(){
			console.log("this")
		}fn()
	</script>

3.不管这个函数时谁的,有没有所属对象,只要作为参数传递,通过参数执行这个函数,一般情况下都是window (隐式丢失)
因为作为参数传递了,这个时候这个this执行就丢了,找不到了,所以就还找window

    // 传参的情况
     function abc(qwe){
         qwe();
     }
    abc(obj.show);

     qwe = obj.show
     qwe();

还有一点:不是所有的回调函数中的this都指向window,某些特殊情况下,被系统修改了。

document.addEventListener("click",function(){
         console.log(this)            //document
     })
     obox.addEventListener("click",function(){
         console.log(this)            //obox
     })

这个this指向不是很难,但是也很重要,所以要熟练掌握他,多多练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值