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

underscore 1.7 _.bind函数源码疑惑

underscore 1.7 _.bind函数源码疑惑

萧十郎 2019-04-16 16:58:21
这几天在阅读underscore的源码,看到函数方法的时候,遇到一点问题。请大家,帮个忙啦~underscore1.7bind函数源码javascript_.bind=function(func,context){varargs,bound;if(nativeBind&&func.bind===nativeBind)returnnativeBind.apply(func,slice.call(arguments,1));if(!_.isFunction(func))thrownewTypeError('Bindmustbecalledonafunction');args=slice.call(arguments,2);bound=function(){if(!(thisinstanceofbound))returnfunc.apply(context,args.concat(slice.call(arguments)));Ctor.prototype=func.prototype;varself=newCtor;Ctor.prototype=null;varresult=func.apply(self,args.concat(slice.call(arguments)));if(_.isObject(result))returnresult;returnself;};returnbound;};问题实际使用时,哪一种情况会跳过下面的if判断,执行后面的代码?能否举个实例?javascriptif(!(thisinstanceofbound))returnfunc.apply(context,args.concat(slice.call(arguments)));
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

正常情况下不应该都会跳过的么?这个问题可以简化下面这段代码:
bound=function(){
returnthisinstanceofbound;
}
在什么情况下会返回true在什么情况下会返回false。这个代码一看就可以知道,只要是正常的调用,诸如bound()之类,函数内部的this肯定是其它对象的。但是当newbound这种调用的时候,内部指针的对象就发生变化了,指向bound了,这个时候就会返回true了。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

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