浅谈JS中的bind方法与函数柯里化
深入JavaScript中的bind方法与函数柯里化
今天,长沙网络推广为大家带来一篇关于JavaScript中bind方法与函数柯里化的。这篇文章将带领大家深入理解这两个概念,并看看它们在实际应用中的表现。
让我们从bind方法开始。bind方法的主要作用是创建一个新的函数,该函数无论如何调用,其this值都是固定的。不同于call和apply方法只是单纯地设置this的值后传参,bind方法会将所有传入的参数(第一个参数之后的参数)与this一起绑定。看下面的例子:
```javascript
var sum = function(x, y) { return x + y };
var su = sum.bind(null, 1);
su(2); // 返回3,可以看到1被绑定到了sum函数的x参数上。
```
bind方法还有一个特性,就是它返回的函数的length(形参数量)会等于原函数的形参数量减去传入bind方法中的实参数量(第一个参数以后的所有参数)。这是因为传入bind方法的实参都会被绑定到原函数的形参上。举个例子:
```javascript
function func(a, b, c, d){...} // func的length为4
var after = func.bind(null, 1, 2); // 这里输入了两个实参(1,2)绑定到func函数的a,b参数上
console.log(after.length); // after的length为2
```
然后,我们来谈谈函数柯里化。这是指将一个接受多个参数的函数转化为只接受一个参数的函数。这种技术在JavaScript中的实践就是使用bind方法。当bind方法返回的函数被用作构造函数时,传入的this值将被忽略,所有实参都会传入原函数。看下面的例子:
```javascript
function original(x){
this.a = 1;
this.b = function(){return this.a + x}
}
var obj={ a: 10 }
var newObj = new(original.bind(obj, 2)); // 传入了实参2,忽略obj(this的值)忽略,传入的实参被传入原函数original中。
编程语言
- 浅谈JS中的bind方法与函数柯里化
- JS实现身份证输入框的输入效果
- Asp.net中获取DataTable选择第一行某一列值
- 用js绘图
- .net框架(framework)版本不匹配的解决方法
- 微信小程序仿RadioGroup改变样式的处理方案
- 基于jquery实现瀑布流布局
- php继承中方法重载(覆盖)的应用场合
- vue中v-for循环给标签属性赋值的方法
- angularjs使用gulp-uglify压缩后执行报错的解决方法
- mysql安装navicat之后,出现2059,Authentication plugin及本
- JavaScript获取网页中第一个链接ID的方法
- 了解JavaScript函数中的默认参数
- PHP三元运算的2种写法代码实例
- AngularJS基础 ng-hide 指令用法及示例代码
- Mysql删除重复的数据 Mysql数据去重复