到目前为止,我还没有能够为Javascript找到任何委托函数教程。更不用说有参数的那些。
希望我当前的问题能够提供一个很好的例子。 (XXXX()是我传递给费()的函数
我现在拥有它的方式,我的“委托”,(XXXX())在调用Fee()后立即执行,而不是在我希望它被调用时(在Fee()内部的某处)
调用函数的代码行:
Fee(prod, item, "usage", i, y, XXXX(prod, y));
功能:
function Fee(prod, item, name, i, y, func) {
var open = false;
var prefix = "#" + prod + name;
$(prefix + y).click(function () {
var feeBoxName = prefix + "FeeBox" + y;
if (open == false) {
FeeOpen(prefix, y);
func; //delegate is called here
AddFeeButton(feeBoxName, "addFeeBtn2");
open = true;
} else {
FeeClosed(prefix, y);
open = false;
}
});
}
代表职能:
function XXXX(prod, y) {
var deducedFeeBoxName = "#" + prod + "usageFeeBox" + y;
alert(deducedFeeBoxName); //at present, this is called immediately when Fee is executed
UsageFeeBoxHeader(deducedFeeBoxName);
UsageFeeBoxData(deducedFeeBoxName, prod, y);
}
评论
答案 0 :(得分:4)
你想:
Fee(prod, item, "usage", i, y, function() { XXXX(prod, y); });
它通常在Javascript中不被称为“委托”。我认为这是一个主要用于微软世界的术语。我们只称它为lambda或匿名函数。
主(Fee
)函数中也有一个错误。改变这一行:
func(); //delegate is called here
答案 1 :(得分:2)
如果您的函数被调用XXX
,那么如果您使用以下语法:XXX()
,则调用您的函数。要将其作为代理传递,您只需传入XXX
:
Fee(prod, item, "usage", i, y, XXX);
Fee方法将负责调用它并确定将哪些参数传递给方法。