¿Qué hace este código (de un tutorial de Mozilla Add-on)?
-
19-09-2019 - |
Pregunta
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_development
No entiendo la parte function(e) { Helloworld.onLoad(e);
. Creo que pasa un parámetro de evento e
a la función onLoad, pero la función onLoad no tiene onLoad: function(e) {}
recibir e
, así que lo que está pasando?
Solución
Sólo define un función anónima . Dicha función será llamada cuando se activa el evento load
Tenga en cuenta que en JavaScript, la declaración de la función no es estricta. Se puede llamar a una función con parámetros incluso si la declaración no se muestra explícitamente tales. En otras palabras, no hay tal cosa como una "función de firma" (como en Java, C ++, etc.). El intérprete de JavaScript sólo se llamará al método "hasmethod" en el objeto de determinar si el "método X" se implementa.
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);
Otros consejos
Puede cambiar el onLoad si usted quiere tener un parámetro, es sólo un ejemplo onLoad. Es JavaScript, después de todo, no en C / C ++, etc.