【发布时间】:2014-09-11 13:31:05
【问题描述】:
将方法转换为柯里化函数的最优雅的方式是什么?Underscore/Lo-dash 或 Ramda 等库中是否支持这种方式?
对于固定数量的参数,我现在正在这样做:
var fn2 = _.curry(function (m, a1, a2, obj) {
return obj[m].call(obj, a1, a2);
});
允许使用如下代码:
var a2b = fn2('replace', 'a', 'b')
a2b('abc')
=> 'bbc'
还有:
var nl2_ = fn2('replace', '<br>')
nl2_('\n', 'some<br>html')
=> 'some\nhtml'
【问题讨论】:
-
我不确定问题是什么; lo-dash 显然支持
curry,除了按照他们写的方式使用它之外,还有什么可以称为“最优雅”的? -
curry 只完成了一半的工作,它没有把方法变成函数
-
这究竟是什么意思,“不把方法变成函数”?
-
我想将对象表示法
obj.func(arg)(其中func是一种“方法”,因为它被定义在对象的上下文上并绑定到对象的上下文)变成func(arg, obj)(一个纯“函数”,它将这个上下文作为参数) -
啊,我明白了,对不起。
标签: javascript underscore.js lodash ramda.js