v2.5.2
Giriş yap

Classda this sorunu

ismailyunlu
406 defa görüntülendi ve 1 kişi tarafından değerlendirildi
class input() {
    constructor(input) 
    {
        this.e = input;
        $(this.e).on("input", "input",  this.method);
    }
    
    method()  {
        const text = $(this.e).val(); //undifeded
    }
}
JavaScript

Buna benzer bir yapım var methodu on ile çağırdığım için this classı değil inputu temsil ediyor. Bu yüzden Classın değişkenlerini kullanamıyorum. Thisin inputu değilde classı temsil etmesini nasıl yapabilirim ya da classın değişkenlerini nasıl kullanabilirim bu durumda?

canpacis
978 gün önce

Event listener eklediğin zaman this context'i değişir evet. Ya tekrardan context'i bind edebilirsin, yani bağlayabilirsin, ya da bound edilen fonksiyonun üzerinden geçebilirsin. Şu şekilde;

$(this.e).on("input", "input",  this.method.bind(this));
// ya da
$(this.e).on("input", "input",  (...args) => this.method(...args));
JavaScript

Metodunu bir arrow function ile sararak this context'ini tutmuş olursun, gelen argümanların hepsini de metoda geçirmeyi unutma tabi. İlkini test etmedim çalışır mı emin değilim, sen test edip buraya yazardan diğer arkadaşlar için de faydalı olur.