我有一個主要的JavaScript文件,我們將調用core.js
其他文件依賴。確定是否包含依賴JavaScript文件
在core.js中,我定義了一個對象,該對象將存在於相關文件中。
core.js:
(function(){
/* base package */
var core = window.core = function() {
// Throw an error, the core package cannot be instantiated.
throw new Error("A package cannot be instantiated");
};
})();
utils.js
/* utils package */
core.utils = function() {
// Throw an error, the core package cannot be instantiated.
throw("A package cannot be instantiated");
};
/**
* Utility: StringUtils
*/
core.utils.StringUtils = new Object();
core.utils.StringUtils.prototype = {
/**
* ltrim - Removes preceding whitespaces
*/
ltrim: function(value) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
},
/**
* rtrim - Removes succeeding whitespaces
*/
rtrim: function(value) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
},
/**
* trim - Removes preceding and succeeding whitespaces
*/
trim: function(value) {
return core.StringUtils.ltrim(core.StringUtils.rtrim(value));
}
};
目前,我加入了一個ID標籤的標籤<script />
<script id="core.js" src="core.js" type="text/javascript"></script>
和檢查它是存在的然後再定義core
對象中的任何新項目。
(function() {
if (typeof (core) == 'undefined') {
var script = document.getElementById("core.js");
if (script == null)
throw ("core.js is missing.");
else
throw ("Unknown Exception. core is undefined.");
}
})();
我應該關心跨瀏覽器兼容性嗎?它目前在IE9和FF5上工作,但我想確保它適用於所有瀏覽器。
是否有替代/更好的方式來確定文件是否被包含?
'便宜'的替代方法是在「必須包含」文件中設置一個標記變量:'var core_is_loaded = true',並檢查該變量的存在並獲得適當的值。 –
不是一個真正的答案,但爲什麼使核心,core.utils等功能,如果你不希望他們被實例化?簡單的對象不會做? –
@Chetan設計模式鬆散地基於Frank Zammetti的'Practical JavaScript,DOM Scripting and Ajax Projects'的第3章。爲了正確的錯誤處理,我想拋出一個錯誤,允許任何使用腳本的人知道他們做錯了什麼,而不是通用的「對象不支持這個動作」。 – Utilitron