请稍等 ...
×

采纳答案成功!

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

手写bind函数没有满足科里化

双越老师,您好!
在课程中,有一个面试例题叫做“手写bind函数”。我仔细看了您的代码,发现它只能实现作用域绑定,不能实现科里化。这是您的代码:

Function.prototype.bind = function() {
  // 将参数拆解为数组
  const args = Array.prototype.slice.call(arguments)
  // 获取 this (数组第一项)
  const t = args.shift()
  // fn1.bind(...) 中的 fn1
  const self = this  
  // 返回一个函数
  return function() {
      return self.apply(t, args)
  }
}

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

2回答

双越 2020-03-27 21:03:02

bind 和 curry 并没有直接关系吧?

1 回复 有任何疑惑可以回复我~
  • 老师,这样写应该就是柯里化了吧。
    Function.prototype.bind3 = function (t, ...args) {
      const self = this;
      if (args.length === 0) {
        return function (...args) {
          return self.apply(t, args);
        };
      } else {
        return self.apply(t, args);
      }
    };
    回复 有任何疑惑可以回复我~ 2020-06-27 16:29:38
  • 双越 回复 drewwwww #2
    柯力化只有一个参数,而你的 bind3 是有多个参数的。
    回复 有任何疑惑可以回复我~ 2020-06-27 21:47:03
提问者 宝慕林7304498 2020-03-27 21:15:03

Function.prototype.bind()是可以实现currying的

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    这没错。但我们的题目是实现 bind ,并没有提到 curry 。
    bind 实现 curry 可以作为这个题目的一个补充,但它不是这个题目的必须部分。
    回复 有任何疑惑可以回复我~ 2020-03-27 22:52:37
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信