我是 JavaScript 新手,我正在尝试创建一个 MapManager 类来实例化一些其他管理器,这些管理器将管理 Google 地图的不同方面;例如标记、不同的视图等。
我遇到的问题是,当我尝试将“this”作为参数传递给 MapManager 正在实例化的其他类时,它只传递 MapManager 的一个空实例(JavaScript 控制台显示“MapManager {}”而我调用 MapManager 类中声明的函数时出错。)
var MapManager = function(map) {
var markerManager = new MarkerManager(this);
var viewManager = new ViewManager(this);
var getMarkerManager = function() {
return markerManager;
}
var getViewManager = function() {
return viewManager;
}
var getMap = function() {
return map;
}
return {
getMarkerManager: getMarkerManager,
getViewManager: getViewManager,
getMap: getMap
}
}
var MarkerManager = function(mapManager) {
var map = mapManager.getMap();
var markers = {};
var createMarker = function(id, latitude, longitude) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
map: map,
animation: google.maps.Animation.DROP
});
marker.set("id", id);
markers[id] = marker;
var listener = new google.maps.event.addListener(marker, "click", function () {
mapManager.getViewManager().setZoomToClient(id);
};
};
return {
createMarker: createMarker
};
}
var ViewManager = function(mapManager) {
var map = mapManager.getMap();
var setBoundView = function() {
var bounds = new google.maps.LatLngBounds();
var markers = mapManager.getMarkerManager.getMarkers();
for(id in markers) {
bounds.extend(markers[id].getPosition());
}
map.fitBounds(bounds);
};
return {
setBoundView: setBoundView
};
}
我不能在 JavaScript 中传递“this”以进行依赖注入吗?如果您能够比较 JavaScript 中的“this”与另一种语言之间的差异,那么知道我熟悉 PHP、Java 和 Python 可能会很有用。