如何使用prototype.js在回调函数中添加参数?
使用prototype.js,我创建了这将是一个构造函数的参数自定义对象:如何使用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选择,我有一个名为“更新”的回调函数,该函数中的参数我的课。
现在,我想传递一个额外的参数到“更新”功能,但不是直接在类中。
我愿做这样的事情:
// element is the parameter I want to add
var update = function(d, element){
alert(element);
}
显然,这是行不通的,我怎么会做同样的事情?
在原型中,可以使用bind函数(属于所有函数)预先填充值并分配上下文。您可以使用咖喱功能,而是如果你不需要使用上下文参数
例如:
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和 http://www.prototypejs.org/api/function/curry关于curryad的信息
编辑
改变你的更新功能:
var update = function(element,d){
alert(element);
}
然后使用咖喱预先定义的元素或如上结合。
我假设回调期望有一个参数的函数,并且您希望它需要一秒钟,您可以在设置回调时定义它。在这种情况下,参数的顺序非常重要。咖喱和绑定可以用来从一开始就预加载参数,因此,你想要预加载的参数应该在任何其他参数之前被定义。希望能够清除所有事情。
我不太清楚你想完成什么,但是这样的事情?
var options = Object.extend({month: date[0],
year: date[1],
day: date[2],
oncalchange: function(d){ return update(d, 'somethingelse');}
});
“元素”未定义使用此。 其实我实例化日历,oncalchange是一个事件函数(Prototype.emptyFunction),当我更改日历中的值时调用。 – kevin 2009-06-08 08:54:59
是的,我尝试了绑定功能。 但我得到一个“未定义”变量使用绑定或咖喱。 update.bind(this,'ok') ... update.curry('ok'); ... var update = function(d,el){console.log(el); // el是undefined } – kevin 2009-06-08 08:58:32