嘗試創建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