2009-11-09 2 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_development이 코드는 Mozilla Add-on 자습서에서 무엇을합니까?

은 내가 function(e) { Helloworld.onLoad(e); 부분을 이해하지 않습니다. 나는 그것이 onLoad 함수에 이벤트 매개 변수 e을 전달한다고 생각하지만, onLoad 함수는 e을 수신하기 위해 onLoad: function(e) {}을 가지지 않으므로 어떻게됩니까?

+3

함수는 전달 된 인수를 무시할 수 있습니다. –

+0

모두, 그런데 "onLoad :"라는 이름은 무엇입니까? 그것은 "var OnLoad ="가 아니기 때문에 변수가 아닙니다! –

+2

JSON 표기법을 사용하여 객체의 속성을 정의하는 예입니다. –

답변

3

익명 함수을 으로 정의하면 해당 함수는 load 이벤트가 트리거 될 때 호출됩니다.

JavaScript에서는 함수 선언이 엄격하지 않습니다. 선언이 명시 적으로 표시하지 않더라도 매개 변수가있는 함수를 호출 할 수 있습니다. 즉, 에는 "함수 서명" (Java, C++ 등)과 같은 것이 없습니다. 자바 스크립트 인터프리터는 객체에 "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

jldupont. 질문에 대한 마지막 질문에 대답 해 주시겠습니까? 감사! –

+1

@Delirium : JS는 Java와 다릅니다. 엄격하게 함수를 선언 할 필요가 없습니다. JS는 "Helloworld"객체에 대해 "onLoad"메서드를 찾습니다. "onLoad (e)"메서드를 찾지 않습니다. 즉 JS는 "함수 시그니처"에 대해 신경 쓰지 않습니다. – jldupont

0

매개 변수가 필요한 경우 onLoad를 변경할 수 있습니다.이 매개 변수는 onLoad의 예입니다. 그것은 결국 C/C++가 아닌 JavaScript입니다.

관련 문제