JavaScript中的“this”关键字

Code 19 0

在JavaScript中,“this”关键字的值取决于函数被调用的上下文,我们可能会遇到“this”不按预期指向的问题,在事件处理程序中,如果事件处理程序是在一个对象的方法中调用的,this”可能会指向调用方法的对象之外的其他地方。

常用代码:

1、使用箭头函数来确保“this”的正确性:箭头函数不会创建自己的this上下文,this”将指向调用它的对象。

// 普通函数
function myFunction() {
  console.log(this); // 指向全局对象(在浏览器中是window)
}
// 箭头函数
const myArrowFunction = () => {
  console.log(this); // 指向调用它的对象
}

2、使用bind()方法来绑定“this”的值:bind()方法创建一个新的函数,该函数在调用时具有指定的this值和参数值。

// 创建一个新的函数,其this绑定到另一个对象上
const myBoundFunction = myFunction.bind(myOtherObject);
myBoundFunction(); // 输出myOtherObject的上下文

优化代码:

1、使用闭包来保存“this”的值:闭包允许一个函数在其外部作用域中保留其内部作用域中的变量,这可以用于保存“this”的值,以便在需要时使用。

class MyClass {
  constructor() {
    // 在构造函数中保存this的值到一个闭包中
    const self = this;
    setTimeout(function() {
      console.log(self); // 输出MyClass的上下文,即使在延迟之后
    }, 1000);
  }
}

2、使用立即调用的函数表达式(IIFE):IIFE是一个立即调用的函数表达式,它创建了一个新的作用域,可以在其中保存和隔离变量,这可以避免全局命名空间的污染,并有助于避免“this”问题。

以上就是关于JavaScript中的“this”关键字的常见问题和优化代码的一些建议,希望对你有所帮助!

《JavaScript中的“this”关键字》.doc
将本文下载保存,方便收藏和打印
导出文档