Récupérer l'instance dans un listener

a marqué ce sujet comme résolu.

Bonjour,

Je découvre en ce moment le Javascript et je bloque sur un truc qui me semble assez bête. J’ai la classe suivante :

class A {
    constructor() {
        this.registerListener();
    }

    trigger() {
        console.log(this);
    }

    registerListener() {
        window.addEventListener('throttledScroll', this.trigger);
    }
};

Le problème est que je n’ai pas accès à this dans ma méthode trigger. J’ai regardé un peu sur stackoverflow et ils utilisent tous des lambdas. Le problème est que je dois modifier ma fonction trigger et que je ne peut plus supprimer mon listener.

Comment faire ?

Merci à vous !

C’est une notion importante de JS en effet.

Le passage de context peut s’effectuer avec apply ou call ou alors, l’utilisation d’arrow functions.

Ton porblème peut donc être corrigé en faisant quelque chose comme ceci :

class A {
    constructor() {
        this.registerListener();
    }

    trigger() {
        console.log(this);
    }

    registerListener() {
        window.addEventListener('throttledScroll', () => { this.trigger(); });
    }
};
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte