v2.5.2
Giriş yap

Classda this sorunu

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

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
875 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));

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.