bind() 方法的特点
- bind() 方法会创建一个新函数。
- 当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,
- 可以把除了第一个参数以外的其他参数都传递给下层的函数(这种技术称为“部分应用”,是“柯里化”的一种)注①
- 如果 bind() 返回的函数 作为构造函数使用,bind 时指定的 this 值会失效,但传入的参数有效。
- new 调用返回的实例能够继承 绑定函数的原型 中的值
注①:
- 来自《你不知道的JavaScript》
关于局部应用与柯里化,引用 mqyqingfeng:
- 柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个 n 元函数转换成 n 个一元函数。
- 局部应用则是固定一个函数的一个或者多个参数,也就是将一个 n 元函数转换成一个 n - x 元函数。
- 如果说两者有什么关系的话,引用 functional-programming-jargon 中的描述就是:Curried functions are automatically partially applied.
bind() 实现
方法一
Function.prototype.fakeBind = function<