这个关闭有效:
var o = {
foo: 5
};
o.handler = function(obj){
return function() {
alert(obj.foo);
};
}(o);
o.handler(); //alert('5')
是否可以在线定义处理程序,也许使用类似于 y-combinator 操作的东西?
var o = {
foo: 5,
handler: function(obj){
return function() {
alert(obj.foo);
};
}(o); //pointer to o? -----------------------------
};
出于学术好奇心,我不想在生产代码中这样做