当变量传递给函数时,javascript会复制它吗?
您好,我有一个名为当变量传递给函数时,javascript会复制它吗?,javascript,google-maps-api-3,Javascript,Google Maps Api 3,您好,我有一个名为regionPolygons的谷歌地图多边形数组。现在我希望每次单击多边形时,我的贴图都将其中心设置为多边形的中心。 下面是我如何实现它的 for (i = 0; i < regionPolygons.length; i++) { google.maps.event.addListener(regionPolygons[i], 'click', function () { // do the stuff, things seem
regionPolygons
的谷歌地图多边形数组。现在我希望每次单击多边形时,我的贴图都将其中心设置为多边形的中心。
下面是我如何实现它的
for (i = 0; i < regionPolygons.length; i++) {
google.maps.event.addListener(regionPolygons[i], 'click', function () {
// do the stuff, things seem ok here
}
}
for(i=0;i
现在,无论单击哪个多边形,我都会被带到最后一个多边形的中心。
我怎样才能让谷歌地图现在点击哪个多边形?
多谢各位
编辑:我的问题是重复的。似乎将相同的代码复制到新函数是可行的。当变量从主程序传递到子程序时,Javascript似乎会创建新的变量副本。有人能帮我解释一下吗?谷歌将单击的多边形与在事件处理程序中作为
this
或作为event.target
但API文档没有给出实际完成的线索。请务必尝试
如果这些建议都不起作用,那么您可以利用闭包来保留i
的副本,如下所示:
for(var i=0; i<regionPolygons.length; i++) {
google.maps.event.addListener(regionPolygons[i], 'click', (function(i) {
return function() {
var polygon = regionPolygons[i];
//do stuff here with `polygon`
};
})(i));
}
for(var i=0;iIt似乎您的方法对我的代码不起作用。不过,我真的很感谢您的帮助:)。谢谢。完全的成功仍然取决于您编写了什么来替换占位符“do stuff here with`polygon”。如果我将这里的do stuff
复制到一个新函数中,同样的事情也会发生。不过,我会再次尝试您的解决方案
for(var i=0; i<regionPolygons.length; i++) {
var p = regionPolygons[i];
google.maps.event.addListener(p, 'click', (function(polygon) {
return function() {
//do stuff here with `polygon`
};
})(p));
}