this是指向的哪个全局变量,改变this指向的方法有几种?

2023-12-13 10:08:05

无法回答这个问题,因为没有上下文。在JavaScript中,this指向的是当前上下文中的对象。如果没有明确定义上下文,则this将指向全局对象(浏览器中是window对象)。

改变this指向的方法有三种:

  1. 使用call()、apply()方法将指定对象作为函数的上下文来调用该函数。
  2. 使用bind()方法来创建一个新函数,将指定对象作为新函数的上下文。
  3. 使用箭头函数,它们会自动捕获定义时的上下文,而不是在调用时执行上下文。

代码示例:

// 使用call()方法改变this指向
function greet() {
  console.log(`Hello, ${this.name}`);
}

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

// 使用bind()方法改变this指向
const person2 = { name: 'Jane' };
const greetPerson2 = greet.bind(person2);
greetPerson2(); // 输出: Hello, Jane

// 使用箭头函数改变this指向
const person3 = { name: 'Bob' };
const greetPerson3 = () => {
  console.log(`Hello, ${this.name}`);
}
greetPerson3.call(person3); // 输出: Hello, undefined

文章来源:https://blog.csdn.net/m0_74801194/article/details/134939911
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。