Klassenbereich mit Methode, die von der Unterklasse JS aufgerufen wird

Chris Bell

Ich habe eine Unterklasse, die einige Validierungsaufgaben ausführt, die eine Methode in der übergeordneten Klasse aufrufen, die sie erweitert. Dies funktioniert an allen Stellen, außer wenn ich auf den lokalen Bereich in der übergeordneten Klasse zugreifen muss (siehe Beispiel unten)

Unterklasse

export default class ElementEvent extends Core {
  constructor(events){
    super(events);

    this.validation = this.validateEvent();
    this.element = this.getElement();
    this.triggered = false;
    this.player = false;
    this.waitForElementDelay = 3000;

    if (this.validation){
      if (this.element){
        this.processEvent();
      } else {
        this.waitForElement();
      }
    }

waitForElement(){
    const interval = setInterval(()=>{
      const el = this.getElement();
      if (el){
         this.element = el;
        this.processEvent();
        clearInterval(interval);
      }
    }, this.waitForElementDelay)
  }
  }

Elternteil

export default class Reading extends ElementEvent {
  constructor(event) {
    super(event);
    this.readingZoneHeight = 50; 
    this.wordsPerMinute = 300;
    this.timer = 0;
  }

  processEvent() {
    //this.elementEntryPoint = this.getElementEntryPoint();
    //this.elementExitPoint = this.getElementExitPoint();

    console.log(this);
    console.log(this.readingZoneHeight);
    window.addEventListener('scroll', () => {
      console.log('Inside Event Listener ' + this.readingZoneHeight);
      //this.handleWindowScroll();
    });
  }
}

Wenn ich ein Konsolenprotokoll anführe, wird hier eine Leseklasse mit allen Requisiten angezeigt, die ZoneHeight, wordsPerMinute usw. lesen sollen. This.readingZoneHeight ist jedoch nicht definiert. Im Ereignis-Listener ist this.readingHeight jedoch der richtige Wert. Sie sind sich also nicht sicher, was hier passiert.

Hilft jemand?

Gabriele Petrioli

Dies geschieht, weil Sie die Methode Reading's processEventvom Konstruktor des aufrufen ElementEvent. Dies wird also tatsächlich als Teil des super(event)Aufrufs im Konstruktor der ReadingKlasse aufgerufen .

Und da super(event)dies geschieht, bevor Sie dem Objekt tatsächlich etwas zuweisen, this.readingZoneHeighterfolgt dies undefinedzum Zeitpunkt der Protokollierung.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Java: Methode, die von der Unterklasse im Superklassenkonstruktor aufgerufen wird

Die Methode "main" der Unterklasse der Operation wird nicht aufgerufen, wenn OperationQueue ausgeführt wird?

Wie man eine Methode verspottet, die von der Render-Methode mit flachem (Enzym) aufgerufen wird

Die Swift-Protokollerweiterungsmethode wird anstelle der in der Unterklasse implementierten Methode aufgerufen

Warum wird die Methode zum Überschreiben immer vom Objekt der Unterklasse aufgerufen?

Java-Vererbung: Warum wird die Methode der Unterklasse nicht aufgerufen?

Wie man sicherstellt, dass eine bestimmte Methode in der abstrakten Superklasse von der Methode in der Unterklasse (Java) aufgerufen wird

UseState, das von UseEffect aufgerufen wird, aktualisiert die Variable nicht mit der Set-Methode

Die Methode ready () von Vue.js wird in der vue-Komponente nicht aufgerufen

Warum wird der statische Initialisierer einer Unterklasse nicht aufgerufen, wenn eine in ihrer Oberklasse deklarierte statische Methode für die Unterklasse aufgerufen wird?

Was passiert, wenn die überschriebene Methode von mit aufgerufen wird?

Die C # -Methode wird zweimal mit der Eingabetaste aufgerufen

Blazor: Aufrufen der statischen C # -Methode von der JS-Funktion, die von HTML onclick aufgerufen wird - warum kann der JS die Methode nicht finden?

Die didUpdateWidget-Methode von Widget wird aufgerufen, wenn der Bildschirm mit MaterialApp-Routen gedreht wird

Funktion wird nicht von der JS-Hauptfunktion aufgerufen, die mit dem onClick-Ereignis aufgerufen wird

Wie kann man die Methodenparameter einer Methode mit Scheininjektion abrufen, die von der zu testenden Funktion aufgerufen wird?

Aufruf der Child-Methode von Parent, wenn die Parent-Methode von Child aufgerufen wird

Java - Warum die Unterklasse von ArithmeticException Klasse nicht aufgerufen wird?

Eingabe der überschriebenen Methode, die von der geerbten Methode aufgerufen wird, in TypeScript (Bug?)

Spring-Transaktionen: Methode mit require_new, die von einer Methode mit require aufgerufen wird

Die Methode von UITabBarControllerDelegate wird nicht aufgerufen

So überschreiben Sie eine Methode in Komponententests, die aufgerufen wird, von der aus die Klasse getestet wird

Das Modell empfängt keinen Aufruf von der Methode, obwohl die Methode im Controller aufgerufen wird

Wie verspotte ich eine Methode, die von einer anderen Methode mit EasyMock aufgerufen wird?

Der Nullwert stammt von der Post-Methode (FromBody), wenn die API von Powershell aufgerufen wird

Die im Ersteller aufgerufene Methode wird von der Basisklasse aufgerufen, nicht jedoch von der abgeleiteten Klasse

Rufen Sie das Bild von der Methode ab, die von der URL in Python aufgerufen wird

Testen Sie die Instanz der Klasse, von der die verspottete Methode in Python aufgerufen wird

Der Hauptthread wird blockiert, wenn die Methode von einem anderen Thread aufgerufen wird