簡體   English   中英

JavaScript原型問題(使用Google Maps)

[英]Javascript prototype problems (with google maps)

我正在嘗試編寫干凈的GoogleMap.js腳本。 我創建了一個包含gMarker和gInfoWindow的js類,我想在其原型(共享)中設置一個“ openedInfoWindow”屬性,因此我可以在用戶單擊特定gMarker時關閉它並對其進行更改,而無需將其聲明為全局。

function gMarkerWInfo(gMarker,gInfoWindow){
    if(!gMarker || !gInfoWindow)
        return null;
    this.Marker = gMarker;
    this.InfoWindow = gInfoWindow;
}

gMarkerWInfo.prototype.openedInfoWindow = null;

gMarkerWInfo.prototype.openInfoWindow = function(){
    if(this.openedInfoWindow){
        alert(this.openedInfoWindow.getContent());
        //openedInfoWindow.close();
    }
    this.InfoWindow.open(this.Marker.getMap(),this.Marker);
    this.openedInfoWindow = this.InfoWindow;
}

“警報”用於調試目的,每次單擊它時,都會向我顯示“鏈接”到我剛剛單擊的gMarker的InfoWindow的內容。 因此,“ openedInfoWindow”無法正常運行。 誰能幫我?

PS。 這是我用來在“ GoogleMap”類中創建gMarkerWInfo的函數:

this.createMarkerWInfo = function(LatLng,Name,HTML_Infos){
    var gMarker = new google.maps.Marker({  position: LatLng,
                                            animation: this.MarkerAnimation,
                                            map: priv_Map,
                                            title: Name
                                        });
    var gInfoWindow = new google.maps.InfoWindow({content:HTML_Infos});
    var gMarkerWInfoWindow = new gMarkerWInfo(gMarker,gInfoWindow);
    google.maps.event.addListener(gMarker,'click', function() {gMarkerWInfoWindow.openInfoWindow();});
    return gMarkerWInfoWindow;
}

閱讀本文時,我發現:“ 定義:函數的prototype屬性是將作為原型分配給所有創建的實例的對象。[...]重要的是要了解函數的prototype屬性與它的實際原型。

因此,我了解到我之前嘗試使用的Object.prototype與符合我的興趣的Function.prototype

就是這樣,終於可以了:

function gMarkerWInfo(gMarker,gInfoWindow){...}

gMarkerWInfo.prototype.openedInfoWindow = null;

gMarkerWInfo.prototype.openInfoWindow = function(){
   if(gMarkerWInfo.openedInfoWindow)
           gMarkerWInfo.openedInfoWindow.close();
    this.InfoWindow.open(this.Marker.getMap(),this.Marker);
    gMarkerWInfo.openedInfoWindow = this.InfoWindow;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM