2016-04-01 21 views
0

bu snippet'indeki self değişkeni kaldırmak için posisble mı:Bir nesneyi yayımlama bağlamında bağlamı (this) mi? Kendini iyi mi?

class Foobar { 
    constructor() { 
    let self = this; // How do I remove self? 
    let fizz = buzz.doSomething({ 
     aFunction: self.someFun 
    }); 
    } 

    someFun() { 
    } 
} 

Seçeneklerden biri boş bir nesne tanımlamak ve sonra anahtarla işlev atamak olabilir.

let options = {}; 
options[aFunction] = this.doSomething; 
let fizz = buzz.doSomething(options); 

Seçenek nesnesi 10 öğenin bir listesi haline gelirse, bunların tümünü tek bir çift ayraçla sarmak daha iyi olmaz mı?

Bunu göz ardı ettim mi?

+0

Neden 'bind' çağrısı 'bu' bağlamını yapıcı yerine bağlamak için kullanmıyorsunuz? O zaman kendine ihtiyacın olmayacak. –

cevap

0

Kod snippet'inizde this güvenli bir şekilde kullanabilirsiniz. this yalnızca, function(){} sözdizimini kullanarak bir işlevi çağırırken anlam kazanır. Sizin durumda, sadece this'un self ile aynı olduğu bir nesne hazırlığı oluşturuyorsunuz.

constructor() { 
    let fizz = buzz.doSomething({ 
     aFunction: this.someFun 
    }); 
} 

Bu, gayet iyi çalışır. Hatta bir jsfiddle yaptı.

Daha derinlemesine incelemek isterseniz, MDN'de this adresine bakın.

+2

Haklısınız. Şapşalım. Teşekkürler. – givanse

+1

* Herhangi bir * işlevini * herhangi bir * işlev çağrısı sözdizimi ile çağırdığınızda, işlev gövdesinin içindeki "bu" değeri, nasıl çağrıldığına bağlıdır. Anonim işlevler başka herhangi bir işlevden farklı değildir. –

+0

Tamamen haklısınız! –

İlgili konular