Javascript中 this的精要总结

对于javascript中this的指向问题,或许你和我一样,总是很迷惑,今天通过学习了有些作者对这方面比较深刻的理解后,抄录其中比较有用的精髓如下:

本文主要引用至:追梦子,如有需要可以导向去阅读。

关键知识点记录如下:

  • this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象
    • 情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。
    • 情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。
    • 情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象
  • 更新一个小问题当this碰到return时
    如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。
  • 知识点补充:
      1.在严格版中的默认的this不再是window,而是undefined。
      2.new操作符会改变函数this的指向问题,虽然我们上面讲解过了,但是并没有深入的讨论这个问题,网上也很少说,所以在这里有必要说一下。
  • function fn(){
        this.num = 1;
    }
    var a = new fn();
    console.log(a.num); //1
    

    为什么this会指向a?首先new关键字会创建一个空的对象,然后会自动调用一个函数apply方法,将this指向这个空对象,这样的话函数内部的this就会被这个空的对象替代。

  结束:当然,如何后期出现有更新的部分和新的理解,我还会慢慢做出更新的。

posted @ 2017-08-25 14:03  zhaosw  阅读(153)  评论(0编辑  收藏  举报