NEWS
Problem mit Variablen Vererbung in Javascript Klasse
-
Hallo,
ich möchte mir klassen anlegen die wie nachfolgend, z.B. die Auswertung und Steuerung von Schaltsteckdosen mit Leistungsmessung übernehmen,
mein Problem ist das die Variable this.leistung und this.name in dem Unterobjekt "on" keine Gültigkeit haben, wie kann ich diese übergeben, bzw. auf diese aus der on-Funktion zugreifen?
class EnergieMesser{ constructor(name, datenpunkt, leistung){ this.name = name; this.datenpunkt = datenpunkt; this.leistung = leistung; createState(this.leistung, 0.0); log(this.name); log(this.leistung); on({id: this.datenpunkt, change:"ne"}, function (obj){ var dblValAlt = obj.oldState.val; var dblValNeu = obj.newState.val; var intTimeAlt = obj.oldState.ts; var intTimeNeu = obj.newState.ts; var dblFaktor = 3600 / ((intTimeNeu - intTimeAlt)/1000); var dblLeistung = (dblValNeu - dblValAlt) * dblFaktor; log(this.name + ": " + dblLeistung.toFixed(3) + " Wh"); setState(this.leistung, dblLeistung); }); } }Schon mal vielen Dank für eure Hilfe.
Gruß Dominic
-
Der übliche Trick ist vor dem on eine variable zu definieren die einen verweis auf "this" hat. Diese hat dann auch innerhalb der Funktion (weil für die Funktion ist Sie quasi "global") gültig.
Übliche Namen sind "self" oder "that".
also:
var self = this; on('myevent', function() { self.whatever(); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden