【发布时间】:2025-11-24 06:40:01
【问题描述】:
到目前为止,我还没有找到任何适用于 Javascript 的 Delegate 函数教程。带参数的就更不用说了。
希望我当前的问题能提供一个很好的例子。 (XXXX() 是我传递给 Fee() 的函数)
我现在的方式是,我的“委托”(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);
}
评论?
【问题讨论】:
-
与布尔值比较时使用严格比较(
===和!==)。定期比较可能会将您的布尔值强制转换为数字 - 您当然不希望这样。 (如果另一个操作数不是布尔值,则会发生强制。)
标签: javascript lambda delegates anonymous-function