为了账号安全,请及时绑定邮箱和手机立即绑定

在线等!关于JS中的apply函数的一些一问题?

在线等!关于JS中的apply函数的一些一问题?

慕码人2483693 2019-06-09 10:48:57
vargetSingle=function(fn){varresult=null;returnfunction(){returnresult||(result=fn.apply(this,arguments));//这行}}//使用varfoo=getSingle(function(){//do...})foo()这个单例的代码中。(result=fn.apply(this,arguments))改成result=fn()是不是也行?为什么一定要用apply修正一下this呢?感觉这里的this即使不修正,也是指向宿主window。麻烦大佬们帮忙指导下,谢谢。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

没有上下文,没太明白这边在干嘛。但应该不是楼上回答说的那样,函数getSingle的返回值是一个非箭头函数,所以这个返回值中的this在调用时才会确定,而并不一定是window或某个对象,但如果这边不apply或call,直接fn()的话是必然会丢失this的指向的,即会指向默认的window。
                            
查看完整回答
反对 回复 2019-06-09
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

这里的apply是为了将arguments“打散”传入fn,比如:
functionfn(a,b){
console.log(a,b);
}
fn.apply(this,[1,2]);
上面运行结果打印12,apply将[1,2]“打散”成了两个实参。
而且所给的this是指向内部的函数,不是window。
                            
查看完整回答
反对 回复 2019-06-09
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信