javascript - 如何使用 prototype.js 在回调函数中添加参数?

标签 javascript oop prototypejs

使用 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/

相关文章:

javascript - jquery.mentionsInput 在移动设备上不起作用

javascript - 克隆 JavaScript 函数 : anything else better than using eval?

javascript - 触发输入变化

javascript - jquery 函数原型(prototype)

javascript - 将这个基本 js 转换为 jquery 会产生奇怪的结果

javascript - 在 react 功能组件中使用 useEffect 时出错

javascript - mongoose.js Model.remove 仅在循环内有效一次

c++错误错误C2512没有合适的默认构造函数可用

php - 鉴别器列可以成为 Doctrine2 中主键的一部分吗?

javascript - 无法动态地将值设置到标签中