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);。イベントパラメータをonLoad関数に渡すと思いますeが、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 に答える