Mit der neuen Klasse es6 können Sie die Selbstreferenzvariable this
in Methoden verwenden.
Wenn jedoch eine Klassenmethode eine Unterfunktion oder einen Rückruf hat, hat diese Funktion/dieser Rückruf keinen Zugriff mehr auf die Selbstreferenzvariable this
class ClassName {
constructor(dir){
this.dir = dir;
fs.access(this.dir, fs.F_OK | fs.W_OK, this.canReadDir);//nodejs fs.access with callback
}
canReadDir(err){
this.dir;// NO ACCESS to class reference of this
}
//OR
aMethod(){
function aFunc(){
this.dir;// NO ACCESS to class reference of this
}
}
}
Gibt es dafür eine Lösung?
Sie haben folgende Möglichkeiten:
1) Verwenden Sie eine arrow -Funktion:
class ClassName {
// ...
aMethod(){
let aFun = () => {
this.dir;// ACCESS to class reference of this
}
}
}
2) Oder die bind()
-Methode:
class ClassName {
// ...
aMethod(){
var aFun = function() {
this.dir;// ACCESS to class reference of this
}.bind(this);
}
}
3) Speichern Sie this
in einer spezialisierten Variablen:
class ClassName {
// ...
aMethod(){
var self = this;
function aFun() {
self.dir;// ACCESS to class reference of this
}
}
}
Dieser Artikel beschreibt die erforderlichen Details zu this
und den Pfeilfunktionen in JavaScript.
Setzen Sie einen Verweis auf den Würfel in einer Methode () und verwenden Sie diesen in einer Func-Funktion
aMethod() {
var tempDir = this.dir;
aFunc() {
console.log(tempDir);
}
}