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就会被这个空的对象替代。

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

  • 相关阅读:
    安卓7.0手机拍照闪退问题解决
    自定义字体TextView
    Android Studio中的CmakeList NDK配置
    动态规划之最长公共子序列(LCS)
    快速排序
    KMP算法实现
    数据结构中的栈
    双向链式线性表(模板实现)
    Android Studio配置OpenCV(非NDK)
    AndroidStudio 1.4配置NDK
  • 原文地址:https://www.cnblogs.com/zhaosw/p/7427767.html
Copyright © 2011-2022 走看看