zoukankan      html  css  js  c++  java
  • 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就会被这个空的对象替代。

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

  • 相关阅读:
    PaaS 7层动态路由的若干实现
    05-OC对象的内存分析
    04-类与对象的练习(第二个OC的类)
    03-类的声明和实现(第一个OC的类)
    02-类与对象的关系
    01-面向对象和面向过程
    06-BOOL类型的使用
    05-初识OC多文件编程(第4个OC程序)
    04-初识OC多文件编程(第3个OC程序)
    03-第二个OC程序
  • 原文地址:https://www.cnblogs.com/zhaosw/p/7427767.html
Copyright © 2011-2022 走看看