📜  js this in object - Javascript(1)

📅  最后修改于: 2023-12-03 15:02:22.514000             🧑  作者: Mango

JS中的this关键字

在JavaScript中,this是一个非常重要的关键字,它通常用于引用当前函数执行的上下文对象。this引用的对象可能是函数内部定义的对象、全局对象或其他调用该函数的对象。本文将介绍在不同情况下this的用法和引用方式。

this在全局作用域中

this在全局作用域中使用时,它引用的是全局对象,在浏览器中就是window对象。以下是一个简单的例子:

console.log(this === window); // true
this在函数中的用法

this在函数内部使用时,它的引用方式取决于该函数的调用方式。如果函数被作为全局函数使用时,this会引用全局对象;如果函数被作为对象的方法调用时,this会引用该对象。

作为全局函数调用

以下是一个使用this作为全局函数调用的例子:

function test() {
  console.log(this === window);
}

test(); // true

上面的代码中,test()是一个全局函数,当它被调用时,this引用的是全局对象window

作为对象的方法调用

以下是一个将函数作为对象的方法调用this的例子:

var myObject = {
  name: "Bob",
  greet: function() {
    console.log("Hello, " + this.name);
  }
}

myObject.greet(); // "Hello, Bob"

在上面的例子中,greet()方法是一个对象myObject的方法。当它被调用时,this指向了该对象本身。

作为构造函数调用

当函数用作构造函数时,this会指向一个新创建的对象。以下是一个使用this作为构造函数调用的例子:

function Person(name) {
  this.name = name;
}

var person1 = new Person("John");
console.log(person1.name); // "John"

在上面的例子中,我们创建了一个名为Person的构造函数。当我们使用new关键字创建一个新对象时,this被绑定到该新对象,我们可以将数据通过this添加到该新对象上。

使用call()apply()调用函数

通过调用call()apply()方法,可以将一个对象绑定到this上。以下是一个使用call()apply()调用函数的例子:

var myObject = {
  name: "Bob"
};

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

greet.call(myObject); // "Hello, Bob"
greet.apply(myObject); // "Hello, Bob"

在上面的例子中,我们使用call()apply()方法将对象myObject绑定到了this上。这使得我们在greet()函数中可以通过this引用myObject对象。

总结

this是JavaScript中的一个关键字,用于引用函数执行的上下文对象。它的行为取决于函数的调用方式。在全局作用域中,this指向全局对象,而当函数作为对象的方法调用或构造函数调用时,this指向该对象或新创建的对象。通过调用call()apply()方法,可以将一个对象绑定到this上。