手写bind并实现函数柯里化
时间: 2023-05-24 10:03:37 浏览: 152
ES6如何用一句代码实现函数的柯里化
A:
函数绑定是将函数和特定上下文相结合,以便稍后调用函数时该上下文将被保留。函数柯里化则是将多个参数的函数转换为一系列单参数函数。
以下是手写实现 bind 和函数柯里化的示例代码:
```javascript
// 实现 bind
function bind(func, context) {
return function() {
return func.apply(context, arguments);
};
}
// 实现函数柯里化
function curry(fn) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
var innerArgs = Array.prototype.slice.call(arguments);
var finalArgs = args.concat(innerArgs);
return fn.apply(null, finalArgs);
};
}
```
使用上述代码实现以下例子:
```javascript
var obj = {
count: 0,
add: function(num1, num2) {
this.count += num1 + num2;
}
};
var add = bind(obj.add, obj);
add(1, 2);
console.log(obj.count); // 3
var curriedAdd = curry(obj.add, obj, 2);
curriedAdd(3);
console.log(obj.count); // 5
```
阅读全文