Domanda

Sto usando l'eredità prototipica in JavaScript e ho riscontrato un problema che non riesco a capire. Molti esempi di eredità di JS mostrano l'accesso ai membri di un Super da un sottomarino, ma devo accedere ai membri del sottomarino dal Super.

Sto costruendo uno strumento per le prestazioni di mappatura dei test Web Services. Voglio supportare più versioni del protocollo WMS. Voglio mantenere tutte le funzionalità / proprietà condivise in una classe base WMS ove possibile e fornire solo dettagli di implementazione della versione specifica ove necessario. La mia funzione WMS v1.1.1 sembra così:

function wms111() {
    this.version = '1.1.1';
}
wms111.prototype = new wms();

La mia funzione WMS (versione breve) è la seguente:

function wms() {

    var that = this;

    this.HTTPMethod = 'GET';

    this.descriptionParameters = {
        service: 'wms',
        version: that.version,
        request: 'getcapabilities'
    };
}

Quindi lo provo con una chiamata come

var service = new wms111();
var descriptionParameters = service.descriptionParameters;

Ottengo il descriptionParameters oggetto con il service e request Proprietà correttamente definite, ma version è indefinito.

Qualcuno può aiutarmi a capire come accedo alle proprietà corrette da WMS111?

Qualsiasi aiuto molto apprezzato.

È stato utile?

Soluzione

Questo dovrebbe farlo funzionare come previsto:

function wms111() {    
    this.descriptionParameters.version = '1.1.1';
}

Invece di definire una nuova proprietà, sovrascrivi la proprietà che dovrebbe essere diversa nel bambino.

Qui è in azione: http://jsfiddle.net/wd9ve/1/

Altri suggerimenti

Potrei sbagliarmi su questo, ma sono abbastanza sicuro che non puoi. L'eredità funziona dall'alto verso il basso, non dal basso verso l'alto. È possibile sovraccaricare la funzione nella sottoclasse, ma questo è essenzialmente trattando quella funzione nella superclasse come una funzione astratta, che deve essere sovraccarica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top