请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

既然手写bind为什么要在bind的代码里面调用call和apply呢??

感觉如果直接在bind里面就写call和apply,感觉考察重心偏离了,我个人重新写了一个,希望老师看一下。

Function.prototype.myBind = function(target){
  var that = this;
  var args = []
  for(let i = 0 ; i < arguments.length ;i++){
    args[i] = arguments[i];
  }
  args.length = arguments.length;
  return function(){
    target.fn = that;
    let myArgs = [];
    for(let i = 1; i < args.length ;i++){
      myArgs.push("args["+i+"]");
    }
    eval("target.fn("+args.toString()+")");
    delete target.fn;
  }
}

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

1回答

双越 2021-12-11 22:43:32

这样也可以。不过,eval 并不推荐使用(严格模式下,eval 的作用域会不一样)。

说些 bind 是可以使用 call 和 apply 的。但手写 call 就不能使用 apply 了,反之亦然。

0 回复 有任何疑惑可以回复我~
  • 为什么手写call不可以使用apply呢
    回复 有任何疑惑可以回复我~ 2022-10-05 09:59:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信