JS编程建议——67:套用函数

简介: 67:套用函数

建议67:套用函数
套用是JavaScript函数一个很有趣的应用。所谓套用就是将函数与传递给它的参数相结合,产生一个新的函数。在函数式编程中,函数本身也是一个值,这种特性允许用户以有趣的方式去操作函数值。例如,在下面代码中定义一个add()函数,该函数能够返回一个新的函数,并把参数值传递给这个新函数,从而实现连加操作。
var add = function(n){

return function(m){
    return n+m;
}

}
document.writeln(add(2)(3)); //5
当然,也可以为JavaScript扩展一个curry方法,实现函数的套用应用。
Function.prototype.method = function(name, func) {

if(!this.prototype[name]) {
    this.prototype[name] = func;
    return this;
}

};
Function.method('curry', function() {

var slice = Array.prototype.slice;
var args = slice.apply(arguments), that = this;
return function() {
    return that.apply(null, args.concat(slice.apply(arguments)));
};

});
curry方法通过创建一个保存原始函数和被套用函数的参数的闭包来工作。该方法返回另一个函数,该函数被调用时会返回调用原始函数的结果,并传递调用curry时的参数加上当前调用的参数的所有参数。curry使用Array的concat方法连接两个参数数组。但由于arguments数组并非一个真正的数组,所以它并没有concat方法,要避开这个问题,必须在两个arguments数组上都应用数组的slice方法,这样才会产生出拥有concat方法的常规数组。
下面就来应用curry方法,通过curry方法调用add函数,会返回一个新的函数add1,在这个新的返回函数中保存了调用add函数时传递的值,当调用add1函数时,将新旧函数的参数进行相加,返回7。
var add = function() {

var i, sum = 0;
for( i = 0; i < arguments.length; i += 1) {
    sum += arguments[i];
}
return sum;

};
var add1 = add.curry(2);
document.writeln(add1(3)); // 7

相关文章
|
1天前
|
JavaScript 前端开发
js的一些内置函数
js的一些内置函数
7 1
|
1天前
|
JavaScript 前端开发 索引
js的includes函数
js的includes函数
7 1
|
1天前
|
JavaScript 安全 前端开发
js的map函数
js的map函数
7 0
|
1天前
|
JavaScript 前端开发
js的filter函数
js的filter函数
5 1
|
1天前
|
JavaScript 前端开发
js的函数
js的函数
4 0
|
1天前
|
JavaScript 前端开发
js的join函数
js的join函数
5 1
|
1天前
|
JavaScript 前端开发
js的check函数
js的check函数
5 1
|
1天前
|
JavaScript 前端开发 索引
js的some函数
js的some函数
5 1
|
1天前
|
开发框架 JavaScript .NET
Js字符串操作函数大全
Js字符串操作函数大全
6 1
|
3天前
|
JavaScript 前端开发 C语言
JavaScript编程语法练习
本篇文章是对于javaScript中if ,switch,while ,do-while,,for语法的作业练习.对于我来说也是对自己知识掌握的一种检验.是对js的基础语法进行的一次练习,通过有趣的示例进行练习,使得对于代码能够增加印象,对于知识的掌握更加透彻.
18 2