使用 prototype.js,我创建了一个自定义对象,它将成为构造函数的参数:
var options = Object.extend({month: date[0],
year: date[1],
day: date[2],
oncalchange: update});
// update is defined like that :
var update = function(d){
// bla bla
}
// Calling my class
var myObject = new myClass (options);
在 oncalchange 选项上,我有一个名为“update”的回调函数,它在 myClass 中接受一个参数。
现在,我想将一个额外的参数传递给“更新”函数,但不是直接在类中。
我想做这样的事情:
// element is the parameter I want to add
var update = function(d, element){
alert(element);
}
显然它不起作用,我怎么能做类似的事情呢?
最佳答案
在prototype中,可以使用bind函数(属于所有函数)预填值,赋值context。如果不需要使用上下文参数,可以使用 curry 函数代替
例如:
var options = Object.extend({month: date[0],
year: date[1],
day: date[2],
oncalchange: update.bind(this,arg1, arg2)});
或
var options = Object.extend({month: date[0],
year: date[1],
day: date[2],
oncalchange: update.curry(arg1,arg2)});
参见 http://www.prototypejs.org/api/function/bind有关绑定(bind)的更多信息,以及 http://www.prototypejs.org/api/function/curry有关 curryad 的信息
编辑
将您的更新功能更改为:
var update = function(element,d){
alert(element);
}
然后如上所述使用 curry 或 bind 预定义元素。
我假设回调需要一个带有一个参数的函数,并且您希望它花费一秒钟,您可以在设置回调时定义它。在这种情况下,参数的顺序非常重要。 curry 和 bind 可用于从一开始就预加载参数,因此,您要预加载的参数应该在任何其他参数之前定义。希望这能解决问题。
关于javascript - 如何使用 prototype.js 在回调函数中添加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/963904/