J'utilise javascript pour appeler des fonctions qui ont été mis dans un objet comme ceci:erreur Javascript: * est pas une fonction
generatewidgets['mywidget'] = function (mystring) { code }
Plus tard, la boucle i à travers cet objet et appeler chaque fonction avec un paramètre de chaîne.
argument = 'abcdefg';
for (this.key in generatewidgets)
generatewidgets[this.key](argument);
Cela fonctionne très bien dans IE8, mais dans Firefox lance une erreur "argument n'est pas une fonction". Il le fait avec n'importe quel nom de variable que je spécifie pour la chaîne. J'ai également essayé:
generatewidgets[this.key](argument+'');
qui résulte en "'abcdefg' n'est pas une fonction". Quelqu'un sait ce que cette erreur signifie ou pourquoi je l'obtiens?
Cela s'est avéré être la bonne solution, bien que la raison pour laquelle n'est pas clair de la poste ci-dessus, donc je vais spécifier plus. Je créais generatewidgets = new Array(); plutôt que generatewidgets = {}; La classe array crée un objet avec un tas de propriétés non-fonctions qui apparaissaient également dans la boucle. La solution correcte pour moi serait d'instancier l'objet correctement, bien que cette solution fonctionne probablement mieux dans le cas plus général. – Travis