我想組織我的JavaScript,所以我想我會做一個功能JS
文件。無論如何,我可以從調用functions.js
的功能嗎?從單獨的腳本調用JavaScript函數?
編輯
functions.js:
var get_selects;
get_selects = {
getLanguages: function() {
}
}
global.js:
get_selects.getLangueges();
我想組織我的JavaScript,所以我想我會做一個功能JS
文件。無論如何,我可以從調用functions.js
的功能嗎?從單獨的腳本調用JavaScript函數?
編輯
functions.js:
var get_selects;
get_selects = {
getLanguages: function() {
}
}
global.js:
get_selects.getLangueges();
是的。除非像使用經驗豐富的JS開發人員那樣使用閉包,否則函數將在全局範圍內自動提供。這是javascript的一個不好的部分。
做一個不那麼糟糕的做法是將你的函數包裝到一個單獨的對象中,這樣你就不會用大量可能不相關的函數來污染全局範圍。
var utils;
utils = {
its_a_trap: function(enemy){
alert(enemy + ' is coming!');
},
foobar: function(){ return 1 + 1; }
}
utils.its_a_trap('Rebecca Black');
utils.foobar();
如果兩個腳本已包含在相同的HTML文件,當然,這將制定出的框。最好的方法是嘗試一下。
所有.js文件都將頂級函數加載到全局名稱空間中。所以,是的。
簡單地調用它像任何其它的功能
yourFunctionName(yourFunctionParams);
知道,你需要包括你的functions.js你global.js之前,要不然也不會看到你的功能。
不正確,但如果在加載functions.js之前global.js嘗試調用functions.js中定義的任何內容,則會出現錯誤。一般來說,你是對的,但是隨着DOM準備瘋狂,這種「邊緣」情況並非如此「邊緣」。 – coreyward
從您在HTML文件中包含JS的那一刻起,所有功能都可用。所以,如果你作出這樣,它會工作:
<script type="text/javascript" src="functions.js"></script>
<script type="text/javascript" src="global.js"></script>
但是(只要我知道),你必須包括「functions.js」之首。否則,「global.js」將無法找到呼叫。您也可以使「global.js」裏面的小功能,包括對飛「functions.js」,像這樣:
function include(js_path){
//By Fabrício Magri e Micox
//http://elmicox.blogspot.com/2006/12/include-em-javascript.html
var new= document.createElement('script');
new.setAttribute('type', 'text/javascript');
new.setAttribute('src', js_path);
document.getElementsByTagName('head')[0].appendChild(new);
}
比,你的「global.js」的開始調用此函數在瀏覽器請求「global.js」時儘快在該部分包含「functions.js」的內容
如果'functions.js'中的函數是全局函數,則可以從'global.js'但要確保按照正確的順序包含腳本:1. functions.js,2. global.js。但是,我建議你不要**定義全局函數 - 這會污染全局名稱空間(不必要地)。更好的選擇是擁有一個全局對象 - 比如「PHIL」 - 然後將這些函數定義爲該對象的成員。 –
儘量不要在這裏迂腐,但它不工作......你說的不準確,只是可能。如果在加載functions.js之前,global.js會嘗試調用functions.js中定義的任何東西,那麼會出現錯誤,但除此之外,您可以按照您感覺的順序加載它們,因爲JS不是靜態語言。一般來說,你是對的,但是隨着DOM準備瘋狂,這種「邊緣」情況並非如此「邊緣」。 – coreyward
@coreyward,你建議我不要對決腳本嗎? – Phil