Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Problem mit Variablen Vererbung in Javascript Klasse

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Problem mit Variablen Vererbung in Javascript Klasse

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Psens last edited by

      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

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        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();
        });
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        830
        Online

        31.7k
        Users

        79.8k
        Topics

        1.3m
        Posts

        2
        2
        345
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo