webentwicklung-frage-antwort-db.com.de

es6 Javascript-Klasse, die dies innerhalb eines Rückrufs verwendet

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?

14
fredtma

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.

25
Dmitri Pavlutin

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);
    }
}
0
Bálint