这有效:
$("#add").click( -> stack.op "add" )
$("#sub").click( -> stack.op "sub" )
但这不是:
for op in ['add','sub']
$('#' + op).click( -> stack.op op)
两个按钮都执行最后一个操作“sub”。
Class Stack
add: ...
sub: ...
op: (name) ->
eval "this.#{name}()"
答案 0 :(得分:3)
使用do
构造:
for op in ['add', 'sub']
do (op) ->
$('#' + op).click( -> stack.op op)
这是因为for
循环不会创建闭包。