2012-02-14 76 views
0

我使用一個命名空間來保存在JavaScript的一些功能,所有這些我想與window.onload運行。如果我這樣做,一切都按預期工作:結合JavaScript的onload命名空間

SiteFn = {}; 

(function(context) { 
    context.firstFn = function() { 
     // do stuff 
    }; 
    context.secondFn = function() { 
     // do stuff 
    }; 
})(SiteFn); 

window.onload = function() { 
    SiteFn.firstFn(); 
    SiteFn.secondFn(); 
}; 

然而,當我嘗試將它們分組到一個單一的init功能,它似乎被調用window.onload

SiteFn = {}; 

(function(context) { 
    context.firstFn = function() { 
     // do stuff 
    }; 
    context.secondFn = function() { 
     // do stuff 
    }; 
    context.start = function() { 
     context.firstFn(); 
     context.secondFn(); 
    }; 
})(SiteFn); 

window.onload = SiteFn.start(); 

什麼時我做錯了?

+0

'SiteFn.start()'** **調用函數和返回值賦給'window.onload'。 '()'在函數引用後總是調用該函數。的 – 2012-02-14 10:27:11

+0

可能重複[分配「的onmouseover」事件處理程序(http://stackoverflow.com/questions/1534516/assign-the-onmouseover-event-handler) – 2012-02-14 10:27:53

回答

0

你並不需要實際調用該方法,只要給它一個參考,所以

change this: 
window.onload = SiteFn.start(); 
to this: 
window.onload = SiteFn.start; 
+0

謝謝!我應該早點發現它! – 2012-02-14 10:50:27