请稍等 ...
×

采纳答案成功!

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

实现了一下call和apply

实现了一下call和apply, 贴出来大家评评,没实现参数校验,只适合正常调用的场景

call

Function.prototype.myCall = function (){
  const args = Array.prototype.slice.call(arguments)
  const thisObj = args[0];
  Object.prototype.runOuterMethod = this;
  args.splice(0,1);
  thisObj.runOuterMethod(...args);
  delete Object.prototype.runOuterMethod
}

apply

Function.prototype.myApply = function (thisObj, args){
  Object.prototype.runOuterMethod = this;
  thisObj.runOuterMethod(...args);
  delete Object.prototype.runOuterMethod
}

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

2回答

前端祭酒师 2022-05-03 02:41:10

牛的 就是这样 不借助apply 通过挂在原型上 通过调用方的指向 两个关键知识点进行实现

0 回复 有任何疑惑可以回复我~
  • call 和 apply 很对 bind的话 就是和老师一样 返回一个方法就行
    你这样挺好的 理解之后 就很棒
    回复 有任何疑惑可以回复我~ 2022-05-03 02:42:06
双越 2022-03-02 21:53:57

非常好,有自己的想法。

提个小建议:考虑一下这样实现的代码可读性

0 回复 有任何疑惑可以回复我~
  • 提问者 迷你侠 #1
    ok~
    回复 有任何疑惑可以回复我~ 2022-03-02 22:41:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信