我认为您只想将函数放入一个对象中,以便您可以按名称访问它们:
window.switchPanel = (panel = 'left', action = 'toggle') ->
funcs =
open: (panel) ->
...
close: (panel) ->
...
toggle: (panel) ->
...
然后你可以简单地funcs[action](panel)
在里面switchPanel
。如果您不想传递panel
到函数中,那么您不必这样做,它们panel
只需在以下范围内定义即可访问switchPanel
:
window.switchPanel = (panel = 'left', action = 'toggle') ->
funcs =
open: ->
...
close: ->
...
toggle: ->
...
然后你就可以了funcs[action]()
,他们可以随心所欲地做他们喜欢的事panel
。
演示:http: //jsfiddle.net/ambiguous/UV42x/
一些关于JavaScript 闭包的阅读将阐明第二个版本中发生了什么。
您可能需要包含一个if(action !of funcs)
检查以确保您不会尝试使用 bad action
. 或者,正如Aaron Dufour在评论中指出的那样,funcs[action]?()
如果您只需要检查action
一次是否有效,您就可以这样做。