私はこれが古典的な閉鎖方法であることを知っています:
var dvs = document.getElementByTagName("div");
for (var i = 0, len = dvs.length; i < len; i++) {
dvs.onclick = (function(i_) {
return function() {
alert(i_);
};
})(i);
}
ただし、私のアプリケーションではよく混乱します。私のアプリケーションは Google マップに基づいています。
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(...);
});
}
}
メソッド内で、 context を参照するinitEvent
名前の変数を作成し、それをコールバック関数で呼び出します。that
this
これは閉鎖を作成しますか?
addListener
関数が戻ったとき、変数that
はまだ参照されており、閉じられているため、そう思います。
これは本当ですか?