返回

写出通俗易懂的this详解文章:从根源上理解THIS专题汇总(重写版)

前端

通俗易懂的this详解文章:从根源上理解THIS专题汇总(重写版)

JavaScript中,this是一个,它表示当前执行代码的上下文对象。理解this对于理解JavaScript中的对象和方法非常重要。

匿名函数中的this

匿名函数中的this在非严格模式下是window,在严格模式下是undefined。这是因为匿名函数没有自己的this,它会继承外层函数的this。在非严格模式下,外层函数的this是window,所以匿名函数中的this也是window。在严格模式下,外层函数的this是undefined,所以匿名函数中的this也是undefined。

我们把this存在self里面

我们可以把this存在self变量里面,然后在匿名函数中使用self来访问this。这样,无论是在非严格模式下还是在严格模式下,this的值都是相同的。

箭头函数里面的this

箭头函数里面的this是指当前上下文中的this。箭头函数没有自己的this,它会继承外层函数的this。如果箭头函数是嵌套在另一个箭头函数中的,那么箭头函数的this将是外层箭头函数的this。

自我调用函数中的this

自我调用函数中的this是window。这是因为自我调用函数没有外层函数,所以this的值是window。

严格模式和非严格模式下的区别

在严格模式下,this的值是undefined,而在非严格模式下,this的值是window。这是因为在严格模式下,this不能被隐式绑定到window对象。

举个例子

// 非严格模式
function outer() {
  var self = this;

  function inner() {
    console.log(this); // window
    console.log(self); // outer
  }

  inner();
}

outer();

// 严格模式
"use strict";

function outer() {
  var self = this;

  function inner() {
    console.log(this); // undefined
    console.log(self); // outer
  }

  inner();
}

outer();

在非严格模式下,inner函数中的this是window,而在严格模式下,inner函数中的this是undefined。这是因为在严格模式下,this不能被隐式绑定到window对象。

结论

this是一个非常重要的概念,理解this对于理解JavaScript中的对象和方法非常重要。希望本文能够帮助您理解JavaScript中的this。