JavaScript: 名前空間をクラスに適用する
開発規模が大きくなるにつれ、クラス名(コンストラクタ名)が衝突する可能性もでてきます。 その場合は、名前空間という仕組みを使ってクラス名の衝突を回避できます。
ここでは名前空間をクラスに適用する場合の記述方法をみていきます。
変数や関数に名前空間を適用する場合は、次の記事を参考にしてください。
関連記事: 名前空間を空のオブジェクトで作成する
名前空間をクラスに適用するサンプルコード
名前空間を「mySpace」、クラス名(コンストラクタ名)を「Card」、 メソッド名を「getNumber」として作成します。
// 名前空間を作成
var mySpace = mySpace || {};
// クラス
mySpace.Card = function(num){
this.number = num;
}
// メソッド
mySpace.Card.prototype.getNumber = function(){
return this.number;
}
// インスタンス作成
var c = new mySpace.Card(5);
console.log(c.getNumber()); // 5
通常のクラス定義(コンストラクタ定義)と比べて、注意する点があります。
次のように関数宣言文として記述するとエラーとなります。
function mySpace.Card(num){
this.number =num;
}
// エラーメッセージ(Firefox)
// SyntaxError: missing ( before formal parameters
最初に空のオブジェクト「mySpace」を作成し、 そのプロパティとしてクラス(コンストラクタ)を作成するのですから、 関数宣言文形式ではなく、無名関数(関数リテラル)形式で記述する必要があります。