gpt4 book ai didi

JavaScript 事件处理程序范围

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

我正在开发一个使用 Google Maps API 的应用程序。我以前没有使用 javascript 的经验。我想做的是:

function SpeedMarker(position) {
this.speed = 50;
this.marker = new google.maps.Marker({
position: position,
map: map,
icon: 'http://maps.google.com/mapfiles/markerA.png',
zIndex: Math.round(position.lat() * -100000) << 5
});
google.maps.event.addListener(this.marker, 'click', this.ShowInfoWindow)
}

SpeedMarker.prototype.ShowInfoWindow = function () {
var contentString = 'stuff';
infowindow = new google.maps.InfoWindow({
content: contentString
});
infowindow.open(map, this.marker);
}

问题是单击事件发生在文档对象中,而 this.marker 在该上下文中不存在。

有什么方法可以处理我创建的 SpeedMarker 对象中的事件吗?

最佳答案

改变

google.maps.event.addListener(this.marker, 'click', this.ShowInfoWindow);

var self = this;
google.maps.event.addListener(this.marker, 'click', function () {
self.ShowInfoWindow();
});

或使用 Function.bind (警告:may require shim):

google.maps.event.addListener(this.marker, 'click', this.ShowInfoWindow.bind(this));

关于JavaScript 事件处理程序范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488468/

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