this指向
1. 元素的事件绑定
在事件处理中,this 一般指当前触发事件的元素。例如:
html
<button onclick="showElement(this)">Click me</button>
<script>
function showElement(element) {
console.log(this); // 指向<button>元素
console.log(element); // 指向<button>元素
}
</script>2. 函数执行
this 在函数执行时取决于函数调用的方式。如果前面有点,this 就是点前面的对象,否则为全局对象(通常是 window)。
js
function showThis() {
console.log(this); // 指向全局对象(window)
}
showThis();
const obj = {
displayThis: function() {
console.log(this); // 指向obj对象
}
};
obj.displayThis();3. 构造函数
在构造函数中,this 指向当前类的实例。
js
function Person(name) {
this.name = name;
}
const person1 = new Person('John');
console.log(person1.name); // 输出 'John'4. 箭头函数
箭头函数没有自己的 this,其 this 指向创建时的上下文。
js
const showThisArrow = () => {
console.log(this); // 指向创建时的上下文,通常是全局对象(window)
};
showThisArrow();5. call / apply / bind
使用 call、apply 或 bind 可以显式地指定函数中的 this。
js
function greet() {
console.log(`Hello, ${this.name}`);
}
const person = { name: 'Alice' };
// 使用 call
greet.call(person); // 输出 'Hello, Alice'
// 使用 apply
greet.apply(person); // 输出 'Hello, Alice'
// 使用 bind
const greetPerson = greet.bind(person);
greetPerson(); // 输出 'Hello, Alice'