2009-11-09 7 views
0
var Helloworld = { 
    onLoad: function() { 
    // initialization code 
    this.initialized = true; 
    }, 

    onMenuItemCommand: function() { 
    window.open("chrome://helloworld/content/hello.xul", "", "chrome"); 
    } 
}; 

window.addEventListener("load", function(e) { Helloworld.onLoad(e); }, false); 

http://kb.mozillazine.org/Getting_started_with_extension_developmentQue fait ce code (à partir d'un tutoriel de Mozilla Add-on)?

Je ne comprends pas la partie function(e) { Helloworld.onLoad(e);. Je pense qu'il passe un paramètre d'événement e à la fonction onLoad, mais la fonction onLoad n'a pas onLoad: function(e) {} pour recevoir e, alors que se passe-t-il?

+3

Une fonction peut ignorer les arguments qui lui sont passés. –

+0

Tout le monde, au fait, quel est le nom de "onLoad:"? Ce n'est pas une variable, car ce n'est pas "var OnLoad ="! –

+2

Il s'agit d'un exemple de définition des propriétés d'un objet à l'aide de la notation JSON. –

Répondre

3

Définit simplement une fonction anonyme : cette fonction sera appelée lorsque l'événement load sera déclenché.

Notez qu'en JavaScript, la déclaration de la fonction n'est pas stricte. On peut appeler une fonction avec des paramètres même si la déclaration ne les affiche pas explicitement. En d'autres termes, il n'y a pas de "signature de fonction" (comme en Java, C++ etc.). L'interpréteur JavaScript appellera seulement la méthode "hasmethod" sur l'objet pour déterminer si "la méthode X" est implémentée.

var Helloworld = { 

    // parameters can be sent to "onload" but they will be ignored. 
    onLoad: function() { 
    // initialization code 
    this.initialized = true; 
    }, 

    onMenuItemCommand: function() { 
    window.open("chrome://helloworld/content/hello.xul", "", "chrome"); 
    } 
}; 

// attach an event handler to the event "load". Pass the event variable "e" 
// even though the receiving function will ignore it. 
window.addEventListener("load", function(e) { Helloworld.onLoad(e); }, false); 
+0

jldupont. pouvez-vous s'il vous plaît répondre à ma dernière question dans les commentaires de la question aussi? Merci! –

+1

@Delirium: JS n'est pas comme Java: vous n'avez pas besoin de déclarer strictement une fonction. JS cherchera la méthode "onLoad" sur l'objet "Helloworld" c'est tout. Il ne recherche pas la méthode "onLoad (e)", c'est-à-dire que JS ne se soucie pas des "signatures de fonction". – jldupont

0

Vous pouvez changer le onLoad si vous voulez avoir un paramètre, il est juste un exemple onLoad. C'est du JavaScript, après tout, pas de C/C++ etc.