js手撕this绑定--模拟bind函数的实现

bind与apply和call都不同,函数调用它会返回一个新的函数,再次调用才是执行体本身,这种模式也就导致了它传递参数可以分批次依序传递了

Function.prototype.imibind=function(obj,...args){
      let fn=this
      function recurse(...newargs){
         obj=(obj!==undefined&&obj!==null)?Object(obj):window
         obj.fn=fn
         var finalArgs=[...args,...newargs]
         var result=obj.fn(...finalArgs)
         delete obj.fn
         return result
      }

      return recurse
}
function sum(n1,n2,n3){
    console.log("sum");
    console.log(this);
    return n1+n2+n3
}
var obj={name:'xwl'}
var of=sum.imibind(obj,10)
var result=of(20,30)
console.log(result);

bind结果

全部评论

相关推荐

05-23 19:33
重庆大学 Java
只学了传统后端,马上去后端实习了,在想要不要学习agent开发相关的。27秋招和26相比难度如何?
我连备胎都不是却还在...:就暑期实习而言,大厂官宣hc 比 26 多,但是我观察看应该低于 26 的,估计秋招也不简单
点赞 评论 收藏
分享
饼子吃到撑:学院本是这样的,找工作拼运气,你技术再好人家筛选学历照样沉入海底,海投就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务