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_development

我不明白这function(e) { Helloworld.onLoad(e);部分。我认为它将一个事件参数传递e给 onLoad 函数,但 onLoad 函数不必onLoad: function(e) {}接收e,那是怎么回事?

4

2 回答 2

3

只需定义一个匿名函数load:当事件触发时,将调用该函数。

请注意,在 JavaScript 中,函数声明并不严格。即使声明没有明确显示,也可以调用带有参数的函数。换句话说,没有“函数签名”之类的东西(如 Java、C++ 等)。JavaScript 解释器只会调用对象上的“hasmethod”方法来确定是否实现了“方法 X”。

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);
于 2009-11-09T19:52:31.420 回答
0

如果你想有一个参数,你可以改变 onLoad,它只是一个例子 onLoad。毕竟,它是 JavaScript,而不是 C/C++ 等。

于 2009-11-09T19:53:57.963 回答