js中的this

2020-06-27  本文已影响0人  前端二营长

javascript中的this

javascript中的this与java中的this有点不同。
ECMAScript规范中这样写:

MDN上这样写:

可以这样理解,在JavaScript中,this的指向是调用时决定的,而不是创建时决定的,这就会导致this的指向会让人迷惑,简单来说,this具有运行期绑定的特性。

一般情况下,谁调用,this就指向谁

执行上下文生命周期分为三阶段,创建、执行、回收上下文。

首先要明确一个非常重要的结论:this的指向是在函数被调用的时候确定的,也就是执行上下文创建时

  var a = 10;
  var obj = {
      a: 20
  }

  function fn() {
      console.log(this.a);
  }

  fn(); // 10
  fn.call(obj); // 20 call改变this指向到obj

全局this

有一个很好玩的情况:

    var a = 10
    function prin() {
        var a = 30;
        console.log(this.a) 
    }
    prin() // 10 windows调用的函数,所以this指向windows a = 10
    console.log(a) // 10
    var a = 10
    function prin() {
        a = 30;
        console.log(this.a) 
    }
    prin() // 30
    console.log(a) // 30
上一篇 下一篇

猜你喜欢

热点阅读