Je suis totalement novice en Javascript et j'essaie de me faire une idée d'OLN. Ce que je rencontre, c'est que, lorsque j'appelle une méthode objet à partir d'une autre méthode sur le même objet, la valeur de la valeur locale de 'this' dans la méthode appelée change. Voici mon code :
var generator = {
generateForLevelSkillAndCount : function(level, skill, count) {
var functionCall = this['generate_' + level + '_' + skill];
return functionCall(count);
},
generate_0_4 : function(count) {
return this.generate_generic_dots(count, 3);
},
generate_generic_dots : function(count, maxDots) {
/* do cool stuff and return it */
}
};
Donc, j'appelle generator.generateForLevelSkillAndCount(0, 4, 20)
et cela fonctionne correctement, en appelant generate_0_4(count)
. Cependant, c'est là qu'il échoue, la console Javascript de Chrome m'indiquant "Uncaught TypeError : Object [object DOMWindow] has no method 'generate_generic_dots'".
J'en sais assez pour savoir que le problème est que la valeur de this
en generate_0_4
est un objet DOMWindow, plutôt qu'un générateur (ce qui est le cas de l'objet this
pointe vers dans generateForSkillLevelAndCount
mais je n'arrive pas à comprendre pourquoi ça pourrait arriver.
Mise à jour : J'ai mis à jour le code d'exemple selon la suggestion de CMS pour se débarrasser de eval
mais la même erreur est renvoyée, ce qui signifie qu'il ne s'agit pas seulement d'un problème de sécurité. eval
bogue.