0
Wichtig Ich verwende die ES6-Klasse-Anweisung. Antworten auf "Klassen", die mit einer Funktion definiert sind, gelten nicht, da in einer Klassenanweisung etwa var this = that
nicht erlaubt ist. Die Antworten, die ich hier gesehen habe, funktionieren nicht. Keine Variablen außerhalb des Callbacks sind sichtbar.Zugriff auf Klassenmember innerhalb von Callback, wenn innerhalb der ES6-Klassenanweisung
WebPageReader.Storage = class {
constructor(object) {
this.Object = object;
var self = this; // self is out of scope when constructor completes
}
// var self = this; // not allowed here
Load() {
chrome.storage.sync.get('somesetting',
function (setting) {
console.log(this.Object); // I need to do something with this.Object defined at the class level, but this points to something besides my class.
}
);
}
}
'var that = this;' ist so ziemlich erlaubt, lege es einfach in die erste Zeile von 'Load' function body oder benutze die Pfeilfunktion als Callback-Handler. – zerkms
@zerkms, Ich werde es versuchen, aber ich glaube nicht, dass es funktionieren wird b/c andere Variablen in der Last sind nicht sichtbar. Vielen Dank! – toddmo
@zerkms mit einer Pfeilfunktion ist eine großartige Lösung. Sie sollten als Antwort erneut posten. 'chrome.storage.sync.get ('einige Einstellungen', Einstellung => console.log (this.Object));' –