2016-04-08 25 views
6

Yeni es6 sınıfı, this öz referans değişkeni iç yöntemlerini kullanmanıza olanak tanır.
Ancak bir sınıf yöntemi kendini referans değişkeni this
es6 Bunu bir geri arama içinde kullanarak sınıf sınıfı

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 
    } 
    } 
} 

Buna bir çözüm var mı erişimi olan artık bir alt işlev veya geri arama, o işlev/geri arama varsa?

+1

Bunun yerine bir ok işlevi oluşturabilirsiniz 'const aFunc =() => this.dir;' – zerkms

+0

[Ok işlevleri] kullanın (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/ Fonksiyonlar/Arrow_functions # Lexical_this). –

+1

"* Yeni es6 sınıfı, self referans değişkenini bu içteki metotlarda kullanmanıza izin verir. *" - - Ah, hayır, bunun ES6 "class" sözdizimi ile ilgisi yok. Bu anahtar kelime, her zaman yöntemlerde yaptığı gibi çalışır. – Bergi

cevap

14

gibi aFunc odasını kullanabilirler Aşağıdaki seçenekler mevcuttur:

1) fonksiyonunu ok kullanın:

class ClassName { 
    // ... 
    aMethod(){ 
    let aFun =() => { 
     this.dir;// ACCESS to class reference of this 
    } 
    } 
} 

2) Ya da bind() yöntemi:

özel bir değişkende

3) Mağaza this:

class ClassName { 
    // ... 
    aMethod(){ 
    var self = this; 
    function aFun() { 
     self.dir;// ACCESS to class reference of this 
    } 
    } 
} 

This article JavaScript this ve ok işlevleri hakkında gerekli ayrıntıları açıklar.

+0

Kendiliğinden korunmuş bir kelime değil mi? –

+0

@ Bálint Nope. 'self' kullanılabilir. –

+0

Çok teşekkürler –

0

aMethod() içinde DIR bir başvuru koyun, ardından

aMethod() { 
    var tempDir = this.dir; 
    aFunc() { 
     console.log(tempDir); 
    } 
} 
+0

"var self = this;" veya "var that = this;" kullanımı ve bunu daha sonra kullanmak, bu amaç için zaten oldukça iyi anlaşılmış bir uygulamadır. – Monish

İlgili konular