我知道这是经典的关闭方式:
var dvs = document.getElementByTagName("div");
for (var i = 0, len = dvs.length; i < len; i++) {
dvs.onclick = (function(i_) {
return function() {
alert(i_);
};
})(i);
}
然而,在我的应用程序中我经常感到困惑,我的应用程序是基于谷歌地图的。
var app = function() {}
app.prototype = {
init: function() {
this.map = ..;
this.infowindow = ..;
},
initEvent: function() {
var that = this;
google.maps.event.addListener(map, 'click', function() {
that.infowindow.open(...);
});
}
}
在initEvent
方法内部,我创建了一个名为that
context的变量this
,然后在回调函数中调用它。
这会创建一个闭包吗?
我是这么认为的,因为当函数addListener
返回时,变量that
仍然被引用,被关闭。
这是真的?