js中“this”是什么意思?

44次阅读
没有评论

在JavaScript中,“this”是一个关键字,用于指代当前执行上下文中的对象。它的值在函数调用时确定,根据不同的调用方式和上下文而有所不同。具体来说,this的值取决于函数的调用方式,包括函数的普通调用、作为对象的方法调用、使用call()或apply()方法调用以及使用箭头函数等。

下面是各种调用方式下,this的值的示例:

  1. 函数的普通调用

在函数的普通调用中,this的值指向全局对象(在浏览器中是window对象)。

function greet() {
  console.log('Hello, ' + this.name + '!');
}

var name = 'John';
greet(); // 输出 "Hello, John!"
  1. 作为对象的方法调用

当函数作为对象的方法调用时,this的值指向该对象。

var person = {
  name: 'John',
  greet: function() {
    console.log('Hello, ' + this.name + '!');
  }
};

person.greet(); // 输出 "Hello, John!"
  1. 使用call()或apply()方法调用

使用call()或apply()方法可以显式地指定函数调用时的this值。this的值将会被设置为传递给call()或apply()方法的第一个参数。

function greet() {
  console.log('Hello, ' + this.name + '!');
}

var person = {
  name: 'John'
};

greet.call(person); // 输出 "Hello, John!"
  1. 使用箭头函数

箭头函数中的this值是在函数创建时确定的,取决于函数被定义时的上下文,而不是调用时的上下文。

var person = {
  name: 'John',
  greet: function() {
    var self = this;
    setTimeout(() => {
      console.log('Hello, ' + self.name + '!');
    }, 1000);
  }
};

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

在上面的示例中,箭头函数中的this值指向了外部函数greet()中的this值,即指向了person对象。因此,setTimeout()中的this值也指向了person对象。

正文完
 
评论(没有评论)