你真的懂this吗?

2019-10-30  本文已影响0人  阿油_爱周周
首先,我们为什么要学js?

1, this使用频率很高,如果我们不懂this,那么在看别人的代码或者是源码的时候,就会很吃力。
2, 工作中,滥用this,却没明白this指向的是什么,而导致出现问题,但是自己却不知道哪里出问题了。
3, 合理的使用this,可以让我们写出简洁且复用性高的代码。
4,面试的高频问题,回答不好,抱歉,出门右,不送。

this到底是什么?

首先this肯定不是指的自己本身,this就是一个指针,指向调用函数的对象。总结起来就是一个六字真言(谁调用,指向谁),下面让我们一起来看看吧。

function fn(){
  var aa = '你真棒'
  console.log(this)//window
}
fn()
//为什么这里的this是window呢,是因为在非严格模式下,如果这个函数有this,并且没有被上一级调用的话就会指向window

下面我们来看这个

var ff = {
  a:22,
  ss:function(){
    console.log(this.a,this)//22,{a:22,ss:f}
  }
}
ff.ss()

为什么这里不是window呢,是因为如果一个函数中有this,这个函数会被上一级对象调用,那么this就会指向上一级对象

var aa = {
  b:41,
  bb:{
    b:23,
    child:function (){
      console.log(this)//window
    }
  }
}
var ss = aa.bb.child
ss()

这里为什么会是window呢,是因为把aa.cc.child赋值给了全局变量ss,最终的调用事件是在window作用域下调用的ss(),所以最后是window
好了this就到这里了,谢谢大家进来观看,动动你的小手给个赞再走吧!谢谢你呢。

上一篇 下一篇

猜你喜欢

热点阅读