きれいになるのかなぁっと思う書き方を纏めてみた。
javascriptを分業して実装していると、変数名の重複に
注意しなければならないが、名前空間を用いれば気にする
必要がなくなる。クロージャの応用っぽい感じ。
また関数定義やオブジェクト定義、クラス定義など
用途によって使いわける。
prototype.jsやJQueryを使用する場合は、また
ちょっと変わってくるかな。。
▼ config.jsで名前空間と定数定義
var NMSP = {};
NMSP.common = {}; // 共通処理用
NMSP.config = {}; // 定数定義用
NMSP.xxx1 = {}; // 以下用途に合わせて menuやvalidateなど。
NMSP.xxx2 = {};
NMSP.xxx3 = {};
// 定数定義
NMSP.config.AAA = "aaa";
NMSP.config.BBB = "bbb";
NMSP.config.CCC = "ccc";
▼ common.jsで関数定義 共通処理とか
(function() {
var xxxArray = [];
function hogefunc1(arg) {
//処理
}
function hogefunc2(arg1, arg2) {
//処理
}
function hogefunc3(arg1, arg2) {
//処理
}
// 名前空間へのエクスポート
NMSP.common.hogefunc1 = hogefunc1;
NMSP.common.hogefunc2 = hogefunc2;
NMSP.common.hogefunc3 = hogefunc3;
})();
▼ hoge1.jsで関数定義
(function() {
var initObj = {};
var initWidth = 100;
var initHeight = 100;
function hogefunc1() {
//処理
}
// 名前空間へのエクスポート
NMSP.xxx1.hogefunc1 = hogefunc1;
})();
▼ hoge2.jsでクラス定義
// オブジェクト指向に向いている部品の場合はクラスを使用
(function() {
/**
* コンストラクタ
*/
function Hoge(arg1, arg2, arg3) {
this.arg1 = arg1;
this.arg2 = arg2;
this.arg3 = arg3;
this._initXxx();
}
/**
* 初期処理
*/
Hoge.prototype._initXxx = function() {
// 処理
}
/**
* 実行
*/
Hoge.prototype._execXxx = function() {
// 処理
}
// 名前空間へのエクスポート
NMSP.xxx2.Hoge = Hoge;
})();
▼ hoge3.jsでオブジェクト定義
NMSP.xxx3 = {
hogefunc1 : function(arg) {
},
hogefunc2 : function(arg) {
},
hogefunc3 : function(arg1, arg2) {
},
};
▼ hoge4.jsでオブジェクト定義 別の名前空間を使用
if (typeof(NMSP2) == 'undefined') {
NMSP2 = {};
}
if (typeof(NMSP2.xxx) == 'undefined') {
NMSP2.xxx = {};
}
MSP2.xxx = {
hogefunc1 : function(arg) {
},
hogefunc2 : function(arg) {
},
hogefunc3 : function(arg1, arg2) {
},
};
▼ hoge5.jsでオブジェクト定義 別の名前空間を使用
// 上記とちょっと違う書き方だが好みの問題
if (typeof(NMSP3) == 'undefined') {
NMSP3 = {};
}
if (typeof(NMSP3.xxx) == 'undefined') {
NMSP3.xxx = {};
}
NMSP3.xxx.hogefunc1 = function (arg1, arg2) {
};
NMSP3.xxx.hogefunc2 = function (arg1, arg2) {
};
0 件のコメント:
コメントを投稿