关于apply调用

关于apply调用

请问老师,

return function(...args){

timer && clearTimeout(timer);

timer = setTimeout(() => {

func.apply(this, args);

}, delay)

};

setTimeout()里面的函数用了箭头函数,那么这个函数的this不是跟外面的匿名函数的this一样指向search-box组件实例吗?为什么要使用apply调用?是因为debounce方法是外部引入的原因吗?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕嘟嘟 2019-08-21 16:52:29

同学你好,

1,this指向search-box组件实例是对的哦。

2,使用apply的原因是:

http://img1.sycdn.imooc.com//climg/5d5d05df0001e4eb06300209.jpg

课程中是使用的双向数据绑定调用的query,所以query会接收这些输入的内容作为实际参数。因为debounce是通用的函数,因此要考虑多个参数的情况,所以使用扩展运算符的形式把这些参数放在一个数组arg中。案例中是传入一个。

apply是将所有要传入调用函数的参数放在一个数组中,所以在内部函数中,通过apply调用func把参数传递了过去。

如果还有疑惑,可以在问答区再次提问,我们会继续为你解答的。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~


  • 提问者 慕后端6382265 #1
    为什么不用apply调用,直接调用func()会报错?
    2019-08-21 17:22:12
  • 好帮手慕嘟嘟 回复 提问者 慕后端6382265 #2
    同学你好,因为使用扩展运算符的形式把这些参数放在一个数组arg中,apply传递的参数是数组哦~所以要调用apply方法。希望能帮到你~
    2019-08-21 18:53:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师