1. 使用call()、apply()、bind()方法

这是最常见的方法,通过这三个函数可以将函数体内的this关键字指向任何一个对象。

  • call():立即执行函数,并改变函数内部的this指向,可以传递多个参数。
  • apply():立即执行函数,并改变函数内部的this指向,可以传递一个数组。
  • bind():返回一个新函数,并改变新函数内部的this指向,不立即执行。
  1. 使用箭头函数

箭头函数的this指向是定义时的上下文,而不是运行时的上下文,因此无法修改this指向。

  1. 使用ES6的解构赋值

ES6的解构赋值可以将this指向改变到任何一个对象。

let obj = {
  name: '张三',
  sayName: function() {
    let { name } = this;
    console.log(name);
  }
};

let obj2 = { name: '李四' };

obj.sayName.call(obj2); // 李四
  1. 使用对象的方法

对象的方法可以改变函数内部的this指向。

let obj = {
  name: '张三',
  sayName: function() {
    console.log(this.name);
  }
};

let obj2 = { name: '李四' };

obj2.sayName = obj.sayName;
obj2.sayName(); // 李四
如何修改this指向

原文地址: https://www.cveoy.top/t/topic/FBu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录