2016-09-19 2 views
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. 
     } 
    ); 
    } 
} 
+0

'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

+0

@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

+0

@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));' –

Antwort

Verwandte Themen