我的Javascript Literal函数存在问题。
for (curitem in array)
{
var tl = new GTileLayer(copyrightCollection, 0, 21 );
tl.getTileUrl = function(a, b) {
return MyFunction(a, b, curitem);
};
...
secondArray.push(tl);
}
问题是:当调用“MyFunction”时,第三个参数始终是函数创建中使用的最后一个值(值类似于0,1,2,3,4,6和I总是收到6)。
我该如何解决这个问题?
谢谢
答案 0 :(得分:4)
循环和闭包的经典问题。你可以通过在每个循环中创建一个新变量来轻松解决它,例如通过使用匿名函数并将值作为参数传递:
for (var curitem in array) {
var tl = new GTileLayer(copyrightCollection, 0, 21);
(function(curitem) {
tl.getTileUrl = function(a, b) {
return MyFunction(a, b, currentitem);
};
})(curitem);
// ...
secondArray.push(tl);
}