📅  最后修改于: 2023-12-03 15:02:22.514000             🧑  作者: Mango
在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
上。