如何将参数添加到函数的引用中

时间:2011-11-25 21:16:29

标签: javascript coffeescript

我正在为jQuery创建一个插件,其中一个方法有一个带有选项的对象:

opts.events =>格式的事件数组:

name => e.g."click","mouseover"... function => ref to function

以下代码添加了侦听器

myParam = "Test"
for event in opts.events
    google.maps.event.addDomListener btnElement, event.name, event.function

问题

调用函数event.function时应发送myParam作为参考,以及函数的参数

我想到了类似的事情:

myParam = "Test"
for event in opts.events
    google.maps.event.addDomListener btnElement, event.name, event.function.call(myParam)

2 个答案:

答案 0 :(得分:0)

就发送myParam作为字符串的引用而言,已经由Javascript处理了。坏消息是Javascript中的字符串是不可变的,这意味着您无法更改它,假设这就是您想要将其作为参考传递的原因。

至于你的编码问题,这是一个解决方案:

myParam = "Test"
for event in opts.events
    google.maps.event.addDomListener btnElement, event.name, ->
        event.function myParam

->创建一个传递的匿名函数,它已经通过它的闭包知道了你的myParam变量。此函数调用event.function,根据需要传递myParamcall / apply是其他内容,可能不需要用于此目的。

答案 1 :(得分:0)

首先,你误用了.call - 它的第一个参数是一个上下文。例如,如果您尝试将当前上下文传递给函数,则应编写event.function.call(this, myParen)

关于你的主要问题,你需要做的是将函数包装在另一个函数中:

google.maps.event.addDomListener btnElement, event.name, => event.function.call this, myParam

如果上下文在event.function中无关紧要,您可以将其减少到

google.maps.event.addDomListener btnElement, event.name, -> event.function(myParam)