让我们来详细讲解一下“浅谈JS中this在各个场景下的指向”。
1. this 介绍
在JavaScript中,this 指的是函数执行时所处的上下文对象。或者说,this 指的是调用该函数的对象。
this 可以在不同的环境下有不同的值,它的值取决于它所在的执行上下文。
2. this 在各个场景下的指向
2.1 在全局作用域下
在全局作用域下执行 this,它指向全局对象 window。
console.log(this); // 输出 window
2.2 在函数作用域下
在函数作用域下执行 this,它的值取决于函数是如何调用的。
2.2.1 函数作为函数调用
当函数被作为函数直接调用时,this 指向全局对象 window。
function demo() {
console.log(this);
}
demo(); // 输出 window
2.2.2 函数作为对象方法调用
当函数作为对象的方法被调用时,this 指向调用该方法的对象。
var obj = {
name: "John",
demo: function() {
console.log(this);
}
};
obj.demo(); // 输出 obj 对象
2.2.3 使用 call() 或 apply() 方法调用函数
当使用 call() 或 apply() 方法调用函数时,这个函数的 this 指向调用 call() 或 apply() 方法的对象。
function demo() {
console.log(this.name);
}
var obj1 = { name: "John" };
var obj2 = { name: "Smith" };
demo.call(obj1); // 输出 John
demo.apply(obj2); // 输出 Smith
2.3 在事件处理函数中
在事件处理函数中,this 指向触发事件的元素。
<button onclick="console.log(this)">Click me</button>
2.4 箭头函数中的 this
箭头函数没有自己的 this,它的 this 始终与包含它的最近一层非箭头函数的 this 相同,并且在全局作用域内使用箭头函数时,它的 this 始终指向 window 对象。
var obj = {
demo: function() {
var arrow = () => {
console.log(this);
};
arrow();
}
};
obj.demo(); // 输出 obj 对象
3. 总结
在JavaScript中,this 的值很多时候都是非常重要的,它的值会随着执行上下文的改变而改变。所以我们需要认真理解函数执行上下文的概念,并记得在不同的场景下如何正确地使用 this。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈JS中this在各个场景下的指向 - Python技术站