あなたが現在行っている方法は、まさに私が行っている方法でもあります。通常、無名関数自体の内部でウィンドウ オブジェクトを作成し、その内部で宣言します (この場合は jClass = window.jClass)。
(function (jClass, $, undefined) {
/// <param name="$" type="jQuery" />
var VERSION = '1.31';
UPDATED_DATE = '7/20/2012';
// Private Namespace Variables
var _self = jClass; // internal self-reference
jClass = window.jClass; // (fix for intellisense)
$ = jQuery; // save rights to jQuery (also fixes vsdoc Intellisense)
// I init my namespace from inside itself
$(function () {
jClass.init('branchName');
});
jClass.init = function(branch) {
this._branch = branch;
this._globalFunctionality({ globalDatePicker: true });
this._jQueryValidateAdditions();
//put GLOBAL IMAGES to preload in the array
this._preloadImages( [''] );
this._log('*******************************************************');
this._log('jClass Loaded Successfully :: v' + VERSION + ' :: Last Updated: ' + UPDATED_DATE);
this._log('*******************************************************\n');
};
jClass._log = function() {
//NOTE: Global Log (cross browser Console.log - for Testing purposes)
//ENDNOTE
try { console.log.apply(console, arguments); }
catch (e) {
try { opera.postError.apply(opera, arguments); }
catch (e) { /* IE Currently shut OFF : alert(Array.prototype.join.call(arguments, ' '));*/ }
}
};
}(window.jClass= window.jClass|| {}, jQuery));
このように完全に匿名のままにしておく理由は、別のファイルで、この jClass にさらに多くの機能を追加したいと考えているからです。私は単に別のものを作成します:
(function jClass, $, undefined) {
jClass.newFunction = function (params) {
// new stuff here
};
}(window.jClass = window.jClass || {}, jQuery))
ご覧のとおり、私は object.object 表記を好みますが、オブジェクト リテラル object : object を使用できます。それはあなた次第です!
いずれにせよ、これらすべてを個別に残し、実際のページ ロジックなしでカプセル化することで、これを globalJS ファイル内に簡単に配置し、サイトのすべてのページで使用できるようになります。以下の例のように。
jClass._log('log this text for me');
モデルロジックをビジネスロジックと絡み合わせたくないので、2つを分離する正しい道を歩み、グローバルな名前空間/クラス/などをより柔軟にすることができます!