我想在javascript插件中调用一个函数:
var display = function(overlay, overlay_color, modal, opacity, drag) {
//some stuff
}
我目前正在调用此函数:
if (ajax) {
modal.waitUntilExists(function() {
load();
display($("#lean_overlay"), options.overlay_color, $(options.modal_id), options.overlay, options.drag);
});
} else {
display($("#lean_overlay"), options.overlay_color, $(options.modal_id), options.modal, options.overlay, options.drag);
}
问题是如何干掉display
功能的触发?我正在考虑将函数拆分为init
和fire
方法(不确定是否正确的术语) - 调用方法一次,并相应地触发。
非常感谢任何信息,谢谢!
答案 0 :(得分:1)
如果您经常使用(部分)相同参数的函数,则可以使用partial。由于函数是Javascript中的一等公民,因此非常适合这样做functional programming。
在您的情况下,您可以在if语句之前创建一个:
var partial = display.bind(null,
$("#lean_overlay"),
options.overlay_color,
$(options.modal_id),
options.overlay,
options.drag);
然后使用新创建的partial()
http://lostechies.com/derickbailey/2012/07/20/partially-applied-functions-in-javascript/
PS“partial”是一个可怕的函数名unless the function returns a partial。使用更好的东西描述部分的作用,比如你的“火”。