js回调函数内怎么调用外部this

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js回调函数内怎么调用外部this相关的知识,希望对你有一定的参考价值。

参考技术A 在回调函数内部,可以使用ES6的箭头函数,它会自动绑定外部this。例如:

function foo()
this.bar = 'bar';

setTimeout(() =>
console.log(this.bar); // bar
, 1000);

js的回调函数的理解

在说回调函数之前,先说下函数把,就是函数调用是通过函数名+()来做的,那函数名表示什么呢?

函数名表示该函数的指针,不加()时只表示获取到该函数,并未调用,所以函数不可以重载,若是函数名称一样,之后的会覆盖之前的。

 

回调函数:

通过将函数名作为另一个函数的参数,在另一个函数中被调用,这个函数就被称为回调函数。

mounted(){
  this.getData(this.check);
},

methods: {
  getData(callback){
    let info = {
      id: ‘1‘,
      name: ‘zhangsan‘,
    }
    callback(info);
  },

  //检查是否正确
  check(value){
    if(value.id == ‘1‘){
      console.log(‘正确!‘)
    }else{
      console.log(‘错误!‘);
    }
  },

}

 

就比如在getData方法中,入参是一个方法名,由getData来进行调用该方法。在调用getData方法时直接传对应的方法名作为实参即可。

 

那么问题就来了,为什么要作为参数来调用他呢,直接在函数内部进行调用不就好了么,好处有以下方面:

1.在getData中传入的仅仅是一个参数,需要调用时通过传入的参数名+()就可以调用了,在最后实际要调用哪个方法,就要看getData调用时,给他传的是哪个实参了,是比较灵活的,若是直接在方法里写死,是不能动态修改的。

 

注意:

1.回调函数也是函数,区别只是在于使用的方式;

2.回调函数和闭包的区别,都是函数嵌套,本质上来说,回调函数也是闭包,闭包是在一个函数中return另一个函数,而回调函数则是将函数名称作为参数传递给另一个参数来调用的;

3.回调函数可以理解为可以回头调用的函数,作为参数的函数是否调用,什么时候调用,都是可选的。

 

以上是关于js回调函数内怎么调用外部this的主要内容,如果未能解决你的问题,请参考以下文章

js怎样获取调用回调函数的参数值

#yyds干货盘点#js中回调函数

JS回调函数怎么写的?

函数名作为参数传递与回调函数

什么是回调函数

js的回调函数的理解