作者:LAMP小白 点击:2160 发布日期:2013-01-03 21:46:00 返回列表
函数应用
在一些纯粹的函数式编程语言中,函数并不描述为被调用(即called或invoked),而是描述为应用(applied),在JS中我们也可以做同样的事,使
用function.prototype.apply()来应用函数
方法对象.apply(对象,参数数组对象)
方法对象.call(对象,参数)
mio_lt;scriptmio_gt; var a = {}; a.haha = function (name) { console.log('haha'+name); } a.haha.apply(a, ["aaaaaa"]); a.haha.call(a, 'sssss'); mio_lt;/scriptmio_gt;
部分应用(partial application)和Curry化
一次只传递部分参数至一个函数中,得到类似语法糖(syntactic sugar)的执行方法
mio_lt;scriptmio_gt; var add = function (x, y) { if (typeof y === "undefined") { return function(y) { return x + y; } } return x + y; }; console.log(add(10)(20)); var xis10 = add(10); console.log(xis10(200)); mio_lt;/scriptmio_gt;
何时使用Curry化?
当发现正在调用同一个函数,并且传递的参数绝大多数都是相同的,那么该函数可能是用于Curry化的一个很好的候选参数,可以用过将一个函数集合部分应用(partially apply)到函数中,从而动态创建一个新函数,这个新函数将会保存重复的参数,并且还会使用预填充原始函数所期望的完整参数列表
上一篇:配置对象 下一篇:快递查询API