Skip to content

改变this指向的方法有哪些?

Posted on:2024年7月19日 at 10:18

有以下几种常用的方法可以改变this的指向:

  1. 使用bind()方法:bind()方法会创建一个新的函数,并将其内部的this绑定到指定的对象。例如:
function sayHello() {
  console.log("Hello, " + this.name);
}

const person = { name: "John" };
const boundFunction = sayHello.bind(person);
boundFunction(); // 输出: Hello, John
  1. 使用箭头函数(Arrow Function):箭头函数没有自己的this,它会继承外部作用域的this。因此,在箭头函数中使用this时,它会指向定义时所在的上下文。例如:
const obj = {
  name: "Alice",
  sayHello: function () {
    setTimeout(() => {
      console.log("Hello, " + this.name);
    }, 1000);
  },
};

obj.sayHello(); // 输出: Hello, Alice
  1. 使用call()apply()方法:call()apply()方法可以立即调用函数,并显式指定函数内部的this值。它们之间的区别在于参数的传递方式。例如:
function sayHello() {
  console.log("Hello, " + this.name);
}

const person = { name: "John" };
sayHello.call(person); // 输出: Hello, John

// 或者使用 apply()
sayHello.apply(person); // 输出: Hello, John
原文转自:https://fe.ecool.fun/topic/9a1251b3-e4e9-4ef6-a960-14d1c399d3c5