J'ai une instance d'une classe de journalisation "logger", cette classe a une fonction "log (txt)", qui fonctionne.Javascript Objet/Fonction Question
Maintenant je déclare une classe différente "Runner" et je lui passe l'instance de logger dans le constructeur. Tout fonctionne jusqu'à ce que la ligne 5, mais la ligne 7 ne pas écrire dans le journal:
var Runner = function (logger) {
// constructor:
logger.log("this way it works");
this.logger = logger; //line 4
this.logger.log("this also works"); //line 5
this.logf = this.logger.log; //create a shorthand for logging
this.logf("this is not written to log. why? i thought i can create a var for a function"); //line 7
};
var logger = new Logger(); //class not shown here
var runner = new Runner(logger);
var otherinstancce = new OtherClass(logger) //line 12
Pouvez-vous expliquer ce qui est mon erreur?
'function.bind' n'est pas seulement une fonctionnalité de framework, c'est une méthode standard de la prochaine version de JavaScript, ECMA262-5. En tant que tel, vous ne devez pas le pirater dans le prototype de la fonction sans vérifier qu'il n'est pas déjà là, et toute méthode que vous y mettez devrait prendre en charge toutes les fonctionnalités de la méthode 'bind' standard. Celui-ci ne gère pas les arguments-passes. Voir par exemple. le bas de http://stackoverflow.com/questions/1558065/access-event-object-in-event-handler/1558289#1558289 pour une implémentation complète. – bobince