按不同顺序绑定参数
Bind arguments in different order
假设我有
function bake(egg, milk, batter) { ... }
我已经有鸡蛋了。然后写入
var f = bake.bind(null, theEgg);
创建一个函数来完成剩下的工作。
但是:如果我有牛奶或面糊,我想绑定它,它是第一个参数,将稍后传入?是否有一种功能性的方法来扭曲参数,而不只是创建一个匿名的中间函数,并手动扭曲参数,这样我就可以有流畅的,函数式的代码与参数绑定?
我认为您正在寻找部分应用程序,带有占位符。下面是一个帮助器:
var _ = {} // placeholder
var partial = function(f) {
var as = [].slice.call(arguments, 1)
return function() {
var args = as.concat([].slice.call(arguments))
for (var i=args.length; i--;)
if (args[i] === _)
args[i] = args.splice(-1)[0]
return f.apply(null, args)
}
}
那么你可以这样使用:
partial(bake, _, theMilk, _)(theEgg, theBatter)
通常使用对象来实现
var ingredients = {
egg: theEgg,
milk: theMilk,
batter: theBatter
}
bake(ingredients);
然后你可以改变鸡蛋、牛奶或面糊加入ingredients
的顺序,你可以在你的bake
方法中处理null
或undefined
的值。
也有库(如jQuery extend
),允许你合并两个对象在一起,所以,例如,你可以有一个默认的成分集,extended
与参数
相关文章:
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 绑定到 x 可编辑的成功函数未使用正确的参数执行
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 使用JavaScript将onclick事件与参数绑定
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- CoffeeScript绑定多个参数
- 将作用域绑定到事件处理程序,但保留原始参数
- Emberjs - 将参数动态绑定到视图
- 如何将参数传递给backbone.js中事件对象中绑定的函数
- jQuery使用最后一个参数在Javascript循环中单击绑定函数
- 传递类似绑定事件的参数
- Backbone.js的Backbone.Modelbinding插件中是否有绑定的转换器参数
- 将数据绑定参数传递给函数淘汰
- 冒号后面的Regex捕获绑定参数
- 按不同顺序绑定参数
- 将数组或字符串转换为参数列表[SQLite插入绑定参数]
- js:当按钮被点击时,调用一个带有数据绑定参数的函数
- struts2形式绑定参数到集合而不使用索引
- React-Child onClick事件没有't在绑定参数时触发
- kendo - datasource - parameterMap不绑定参数