Что делает этот код (из учебника по дополнениям Mozilla)? - PullRequest
0 голосов
/ 09 ноября 2009
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, так что же происходит?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2009

Просто определяет анонимную функцию : указанная функция будет вызываться при запуске события 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);
0 голосов
/ 09 ноября 2009

Вы можете изменить onLoad, если хотите иметь параметр, это всего лишь пример onLoad. В конце концов, это JavaScript, а не C / C ++ и т. Д.

...