我想要的是这样的:
function bindFunctions(bindFunction, callbackFunction) {
// Add binding so that I can call the callbackFunction if the bindFunction is called
}
function log(message) {
console.log(message);
}
function notifyUser() {
alert('Something');
}
bindFunctions(log, notifyUser);
log('Error'); // Now the notifyUser-functions should be called and "Something" printed to the alert-box
bindFunctions($('.element').click, function() {/* CODE */}); // Or this: but I don't know if this is even possible because this is not the event-function but the binding-function of the click-event
重要提示:我对bindFunction
没有任何影响,因此无法在那里实施触发器。
它是对任何现有功能的回调附件。你知道这是怎么回事吗?
答案 0 :(得分:1)
我相信你以错误的方式看待它。你需要的是一些好的dependency inversion。无论代码需要log
必须从更高级别的组件(例如应用程序的组合根)接收它。然后,您可以自由地实现一个直截了当的wrapper来调用notifyUser
和inject而不是实际的log
。
我已经将一些文章与OO视角联系起来,但可以随意转换为更具功能性的模型(这些方法是等效的)。在您的情况下,您使用闭包(在特定光线下,#34;等效"对于使用单一匿名方法的对象)。
答案 1 :(得分:-1)
向函数添加回调的方法是:
var foo = function(number, callback){
number += 2;
callback(number);
}
foo(2, function(result){
window.alert(result)
});
祝你好运