【发布时间】:2013-04-22 11:53:02
【问题描述】:
尝试在 test.tgt 中创建与 test.src 中的函数相同的函数,但它们将具有上下文。
test.src.fn() => test.work.fn.call(context)
这里是测试台
var fn1 = function() { console.log('fn1'); }; var fn2 = function() { console.log('fn2'); }; var 上下文 = { a: 1 }; 变种测试 = { tgt:{}, src:{一:fn1,二:fn2}, 初始化:函数(){ for( var i in test.src ) { test.tgt[i] = function(arg) { test.src[i].call(test.cxt,arg); }; } } } 测试.init(); test.src.one() => 'fn1' test.tgt.one() => 'fn2' 哎哟!!问题在于 test.src[i] 在函数执行之前不会被评估。
如何在新创建的函数中获得“真实的”test.src[i]?
【问题讨论】:
标签: javascript syntax scope closures