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(); });