我有一些JavaScript代码,它能正常工作。然而,我发现有点难以解释为什么它能正常工作。希望有人能够给我解释清楚。 我有一个对象必须响应特定的事件,例如点击事件。该对象的部分代码如下:
Maps.Marker = function (id, data, clickEvent) {
this.id = id;
this.data = data;
this.clicked = clickEvent;
};
该对象被渲染在谷歌地图上,因此当该对象在地图中被点击时,我想要将事件冒泡到clickEvent。下面是代码的一部分:
if (marker.clicked) { // click handler defined
google.maps.event.addListener(m, "click", function () {
marker.clicked();
});
}
请注意,为了简洁起见,我在这里略去了很多代码,并且知道它在此处粘贴时看起来不正确。重要的是,在Google Map事件监听器内调用了marker.clicked()函数。
因此,当我的标记对象被实例化时,它看起来像这样:
var objClicked = function () {
if (this.data != null) {...}
...
}
var obj = new Maps.Marker("1", { "some object data" }, objClicked);
我完全不理解的是在objClicked函数中this.data实际上是如何工作的(我可以访问"some object data")。 有人能解释一下吗?