尝试创建test.tgt
中的函数,其功能与test.src
中的函数相同,只是它们将具有上下文。无法创建javascript关闭
test.src.fn() => test.work.fn.call(context)
这里是试验台
var fn1 = function() { console.log('fn1'); }; var fn2 = function() { console.log('fn2'); }; var context = { a: 1 }; var test = { tgt: {}, src: { one: fn1, two: fn2 }, init: function() { for(var i in test.src) { test.tgt[i] = function(arg) { test.src[i].call(test.cxt,arg); }; } } } test.init(); test.src.one() => 'fn1' test.tgt.one() => 'fn2' ouch!!
问题是,直到执行功能test.src[i]
未评估。
如何在新创建的函数中获得“真实”test.src[i]
?
可能重复[Javascript闭合内循环 - 简单实用的例子](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – 2013-04-22 12:26:54