JavaScript 如何在回调函数中访问正确的’this’
在JavaScript中,’this’的行为与其他编程语言不同。如果我们执行常规函数调用,那么’this’指向窗口对象。但是,如果我们以不同的方式调用函数,’this’将指向附近的对象。为了更好地理解,以下我们通过两个代码片段和两种不同的调用方法进行了详细说明。
示例1: 在下面的示例中以常规方式调用函数
function printThis(){
console.log(this);
}
printThis();
输出:
Window {0: Window, window: Window,
self: Window, document: document,
name: '', location: Location, …}
示例2:
当我们使用对象表示法调用函数时。
var obj={
name: "Ramesh",
printThis: function(){
console.log(this);
}
}
obj.printThis();
输出:
{name: 'Ramesh', printThis: ƒ}
所以,从上面的两个示例中,我们可以清楚地理解在不同类型的函数调用时,’this’的行为。
方法: 首先创建一个对象并输入示例属性。确保为一个键添加一个函数,在该函数中使用setTimeout添加一个回调函数。在这个setTimeout函数中使用’bind’来绑定this的上下文,然后返回this。
示例: 使用bind
var outerFunction= function(){
innerFunction = function() {
};
setTimeout(innerFunction.bind(this),2000);
return this;
};
var obj = { method: outerFunction ,company :'geeksforgeeks'} ;
obj.method();
输出:

极客教程