如何在回调函数中访问正确的this

如何在回调函数中访问正确的this

在JavaScript中,’this’的行为与其他编程语言不同。如果我们执行一个普通的函数调用,那么’this’指向的是window对象。但是如果我们以不同的方式调用函数,那么’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();

输出:

如何在回调函数中访问正确的<code>this</code>” title=”如何在回调函数中访问正确的<code>this</code>” /></p>
<p><strong>阅读更多:<a class=JavaScript 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程