2009-03-20 8 views
0

Dans mon code jsc.tools est un objet contenant des objets. Chaque sous-objet contient une méthode init() et run().Pourquoi cela ne fonctionne-t-il pas? Appel de fonctions appartenant à des objets dans une boucle

J'ai le code suivant en cours d'exécution au démarrage:

for(tool in jsc.tools) { 
    tool.init(); 
} 

qui me donne l'erreur "tool.init n'est pas une fonction".

Un échantillon de la déclaration d'un outil:

jsc.tools.sometool = {}; 
jsc.tools.sometool.run = function() { 
    // Apply tool 
} 
jsc.tools.sometool.init = function() { 
    // Set bits of data needed for the tool to run 
} 

Répondre

5

L'opérateur dans x javascript vous donne les noms des propriétés sur un objet. Essayez:

for(tool in jsc.tools) { 
    jsc.tools[tool].init(); 
} 
+0

Cela m'a pris un certain nombre de fois aussi. On pourrait penser que le for (x in ..) mettrait x à l'objet/array/string/whatever, mais il ne met que x à la clé. –

0

vous devez utiliser

for(tool in jsc.tools) { 
    jsc.tools[tool].init(); 
}