NEWS
[Gelöst] TypeScript: Klassenvariable innerhalb Callbacks
-
Habe eine Frage zu TypeScript. In einem auf die schnelle zusammenkopierten Beispiel, welches inhaltlich keinen Sinn macht wollte ich fragen, was ich tun muss, dass ich innerhalb eines Callbacks auf die Klassenvariablen zugreifen kann?
Die 2.) Log-Zeile kann nicht auf den Wert this.firstName zugreifen, bzw. er ist immer undefined.
Die 1.) Logzeile gibt den Wert ausIch erkläre mir das mit dem Callback.
Kann mir jemand helfen?
class Person { protected firstName: string; private lastName: string; constructor(firstName: string, lastName: string) { this.firstName = firstName; this.lastName = lastName; init(); } public init() { log("1.) Good morning " + this.firstName + " " + this.lastName); // <<<<----------------- this.firstName/lastName --> "Uwe" !! on({id: "hmip.0.devices.3014F711A0000C1BE99173F5", val: true}, function (obj) { log("2.) Good morning " + this.firstName + " " + this.lastName); // <<<<----------------- this.firstName/lastName --> undefined !! }); } } -
mir wurde an anderer Stelle geholfen.
Wenn man den Callback so gestaltet funktioniert es, d.h. mit "obj =>"
on({id: this.input.baseStatePraesenzmelder + ".channels.1.presenceDetected", val: true}, obj => {@uwe72 Du solltest zusätzlich noch das
init()im Konstruktor durchthis.init()ersetzen.Für alle anderen, die hierdrüber stolpern:
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions#keine_bindung_von_this
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