考虑这个例子,我需要知道使用高阶函数的好处:
function bind(func, object) {
return function(){
return func.apply(object, arguments);
};
}
我的意思是这样一个简单函数的问题:
function bind(func, object) {
return func.apply(object, arguments);
}
答案 0 :(得分:2)
此
function bind(func, object) {
return func.apply(object, arguments);
}
返回func
调用的结果。虽然bind
应返回 new 函数,但在调用时将在适当的上下文中调用(object
)。
答案 1 :(得分:1)
您的示例中的好处是获得partial application:
直观地,部分函数应用程序说"如果你修复了函数的第一个参数,你得到剩下的参数的函数"。例如,如果函数div代表除法运算
x / y
,则参数x固定为1(即div 1)的div是另一个函数:与返回乘法逆的函数inv
相同它的论点,由inv(y) = 1 / y
定义。部分应用的实际动机是,通常通过向函数提供一些但不是所有参数而获得的函数是有用的;例如,许多语言具有与
plus_one
类似的函数或运算符。部分应用程序可以很容易地定义这些函数,例如通过创建一个函数来表示加法运算符,并将1绑定为第一个参数。
在您的示例中,有三条信息:
使用bind
,您可以决定1和2,而稍后再留3。
请参阅Underscore,了解除this
以外的部分应用程序。