JavaScript 中的 `this` 指向谁?

javascript 中的 `this` 指向谁?

js中this的用法

如上所述,this的值根据函数的调用方式而变化,但始终表示调用函数的对象。那么,如何确定函数对应的对象呢?以下是一些常见的规则:

  • 方法调用:当函数作为对象方法调用时,this表示该对象。例如:
const obj = {
  name: "john",
  greet() {
    console.log(`hello, ${this.name}!`);
  }
};

obj.greet(); // 输出 "hello, john!"
  • 普通函数调用:当函数作为普通函数调用时,this指向全局对象(浏览器中为"window",node.js中为"global")。例如:
function greet() {
  console.log(`hello, ${this.name}!`);
}

greet(); // 输出报错:this.name is undefined
  • 构造函数调用:当函数作为构造函数调用时,this指向新创建的对象。例如:
function person(name) {
  this.name = name;
}

const person = new person("jane");

console.log(person.name); // 输出 "jane"
  • 间接调用:当函数通过代理对象(如"call"、"apply"或"bind"方法)调用时,this可以手动设置。例如:
const person = {
  name: "John"
};

function greet() {
  console.log(`Hello, ${this.name}!`);
}

greet.call(person); // 输出 "Hello, John!"

理解this的用法至关重要,因为它决定了函数内部对对象属性和方法的访问方式。

以上就是JavaScript 中的 `this` 指向谁?的详细内容,更多请关注其它相关文章!