我正在为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)
答案 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,根据需要传递myParam
。 call
/ 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)