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

来源:6-5 作用域相关的面试题 - part1

宝慕林7304498

2020-03-27

双越老师,您好!
在课程中,有一个面试例题叫做“手写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)
  }
}
写回答

2回答

双越

2020-03-27

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

1
2
双越
回复
drewwwww
柯力化只有一个参数,而你的 bind3 是有多个参数的。
2020-06-27
共2条回复

宝慕林7304498

提问者

2020-03-27

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

0
1
双越
这没错。但我们的题目是实现 bind ,并没有提到 curry 。 bind 实现 curry 可以作为这个题目的一个补充,但它不是这个题目的必须部分。
2020-03-27
共1条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4709 学习 · 1682 问题

查看课程