Javascript portée addEventListener et ce

Je suis un développeur C# à expérimenter avec JavaScript et je vais essayer d'obtenir ma tête autour de la portée 🙂

J'ai le code suivant qui contient un addEventListener dans laquelle je veux utiliser un champ de mon objet:

(function(window) {

    function Keyboard() {
        this.keys = {};
    }

    Keyboard.prototype.handle_keydown = function(args) {
        this.keys[args.keyCode] = true;
    }

    Keyboard.prototype.listen = function() {
        window.addEventListener('keydown', this.handle_keydown);
    }

    app.util.keyboard = new Keyboard();

})(window);

Je voudrais utiliser le tableau de clés dans mon virage, mais comprenez que je ne peux pas accéder est par l'utilisation de cela, parce que c'est la fenêtre dans ce contexte (correct?).
Si je l'ai changer pour

app.util.keyboard.keys[args.keyCode] = true;

cela fonctionne, mais je ne suis pas sûr que c'est un bon moyen pour résoudre ce problème.

J'ai trouvé cette question, ce qui semble assez similaire, mais Im pas sûr de savoir comment je peux l'adapter dans mon exemple.

Merci pour votre aide!

  • Avez-vous d'ajouter les fonctions par l'intermédiaire de prototype, pouvez-vous placer dans la fonction de Clavier à la place?
  • Est-il une raison pour laquelle vous êtes à l'aide d'un auto-exécution de la fonction?
  • Je voudrais appeler les écouter fonction dans une autre fonction que lorsque je crée le Clavier, donc je pense que je dois?
  • Je pense que je vais le faire aussi garantir mes variables de l'étendue du Clavier de "classe"?
  • C'est vrai, et qui semble la manière la plus responsable pour l'utiliser il suffit de se demander.
InformationsquelleAutor Raf | 2012-12-21