gpt4 book ai didi

这个内部事件处理程序的 JavaScript 代码解释

转载 作者:行者123 更新时间:2023-11-29 10:18:26 25 4
gpt4 key购买 nike

我有一些 JavaScript 代码可以正常工作。但是,我发现很难解释为什么它确实有效。我希望有人能给我讲清楚。我有一个必须响应某些事件的对象,例如点击事件。对象的一部分如下所示:

Maps.Marker = function (id, data, clickEvent) {
this.id = id;
this.data = data;
this.clicked = clickEvent;
};

该对象是在 Google map 中呈现的,因此当在 map 中单击该对象时,我想将事件冒泡到 clickEvent。该代码的一部分如下所示:

if (marker.clicked) { // click handler defined
google.maps.event.addListener(m, "click", function () {
marker.clicked();
});
}

请注意,为了简洁起见,我在此处省略了很多代码,并且粘贴在此处看起来是错误的。重要的是 marker.clicked() 函数在 Google map 事件监听器中被调用。

所以,当我的标记对象被实例化时,它看起来像这样:

var objClicked = function () {
if (this.data != null) {...}
...
}
var obj = new Maps.Marker("1", { "some object data" }, objClicked);

我完全不明白的是 this.data 在 objClicked 函数中实际上是如何工作的(我可以访问“一些对象数据”。有人可以给我解释一下吗?

最佳答案

原因在于javascript中this关键字的方式。当您将一个函数分配给一个对象内的一个属性并稍后调用该函数 marker.clicked() 时,该函数内的 this 将设置为点的左侧,在本例中为 marker

更新

这里有一个更详尽的解释:http://www.impressivewebs.com/javascript-this-different-contexts/

关于这个内部事件处理程序的 JavaScript 代码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com