JavaScript 的 this 指向 如何找?

Posted 虚无——缥缈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于JavaScript 的 this 指向 如何找?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 中改变 this 的指向

JavaScript 中改变 this 的指向

Javascript中的this指向。

在javascript中,function里this的指向是怎样的?

JavaScript全解析——this指向

JavaScript从 this 指向到 reference 类型