zoukankan      html  css  js  c++  java
  • JavaScript 的 this 指向 如何找?

     this指的就是指代函数当前的运行环境。

    那么如何理解上面那就话呢?我们还是看例子

    var f = function () {
      console.log(this.x);
    }
    
    var x = 1;
    var obj = {
      f: f,
      x: 2,
    };
    
    // 单独执行
    f() // 1
    
    // obj 环境执行
    obj.f() // 2
    

       上面: 函数f()在全局环境执行,所有this.x指向的就是全局环境的x。而obj.f()的执行环境是obj。

    如果这是这样说还是有很多人不太明白怎么找当前的运行环境如下面例子。

    var obj = {
     bb: function () {
         console.info(this);
         var aa=function(){
            console.info(this);
         }
         //写法三
         aa();
      }
    };
    
    var bb = obj.bb;
    // 写法一
    obj.bb();
    // 写法二
    bb();
    

      上面this指向其实很简单,就是看看是通过哪个对象 调用的方法。写法一不用多说this就是指向obj。写法二bb()的完整写法 是 window.bb(),我们要看调用时当前作用域是什么,无论bb()在哪里调用都一样。同理方法三aa()也就是window.aa() 即使是aa()是在bb()里调用的。可以分拆成下面

    var aa=function(){
        console.info(this);
    }
    
    var obj = {
     bb: function () {
         console.info(this);
         
         //写法三
         aa();
      }
    };
    
    var bb = obj.bb;
    // 写法一
    obj.bb();
    // 写法二
    bb();
    

      

    注意:这里不包括ES6中的this ,直说自己是怎么找的具体去看阮一峰老师:

    http://www.ruanyifeng.com/blog/2018/06/javascript-this.html

  • 相关阅读:
    隐马尔科夫模型
    计算复杂性理论——函数
    STM32硬件I2C调试
    FPGA简单图像处理
    STM32配置使用外部12MHz晶振
    STM32从模式接受数据
    STM32 I2C读写EEPROM(中断模式)
    STM32 I2C读写EEPROM(POLLING模式)
    STM32串口实验
    STM32使用TIM闪烁LED——PWM方式
  • 原文地址:https://www.cnblogs.com/xuwupiaomiao/p/12951964.html
Copyright © 2011-2022 走看看