Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Verständnisfrage Klassen und on()

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    991

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Verständnisfrage Klassen und on()

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
3 Beiträge 2 Kommentatoren 339 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    da.phreak
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich komme grad nicht weiter. Ich will meine lose Script-Sammlung mal aufräumen und alles sauber in Klassen packen. Dabei wollte ich einen Schalter abstrahieren:

    class Switch{
        private nodeState:string;
    
        public get State():boolean {
            return getState(this.nodeState).val;
        }
    
        constructor(address:string) {
            this.nodeState = address + ".state";
            on(this.nodeState, this.OnStateChanged);
        }
    
        private OnStateChanged():void {
            log(this.nodeState + ": " + this.State);
        }
    }
    

    Das OnStateChanged ist wie man sieht erstmal nur ein log zum Testen. Alles was ich ausgegeben bekomme ist "undefined: undefined", sprich nodeState ist nicht gesetzt, obwohl vorher zugewiesen.

    Wenn ich außerhalb der Klasse sowas mache, funktioniert es:

    var sw:Switch= new Switch('zigbee....df1a');
    
    on('zigbee....df1a.state', OnStateChanged)
    
    function OnStateChanged() {
        log("# " + sw.State);
    }
    
    

    Kann mir jemand erklären, warum?

    1 Antwort Letzte Antwort
    0
    • N Offline
      N Offline
      Nahasapee
      schrieb am zuletzt editiert von
      #2

      hi
      probiers mal mit

      ....
      on(this.nodeState, this.OnStateChanged.bind(this));
      .....
      

      gruß

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        da.phreak
        schrieb am zuletzt editiert von
        #3

        Vielen Dank, hat funktioniert.

        Gibt es irgendwo eine Erklärung dazu ... ich verstehe Sachen gern. So würde ich mir zusammenreimen, daß on() ohne bind irgendwie den Kontext nicht kennt, und so keine Zugriff auf Klassen-member hat.

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        436

        Online

        32.6k

        Benutzer

        82.3k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe