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

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();

输出:

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程