JavaScript: 名前空間を空のオブジェクトで作成する
プログラムの規模が大きくなると、変数名、関数名の衝突が起きる可能性が高くなります。
そうした場合は、名前空間という仕組みを用いて変数名、関数名の衝突をさけることができます。 プログラム言語によっては名前空間のことを「パッケージ」ともいいます。
多くの言語では名前空間の仕組みが元々備わっているのですが、JavaScript では備わっていません。 そこで、空のオブジェクトを使って「名前空間」の仕組みを作成します。
名前空間を作成する
例えば、「mySpace」という名前の名前空間を作成する場合は、通常次のように記述します。
// 名前空間作成
var mySpace = mySpace || {};
mySpace というオブジェクトが存在しなければ、 空のオブジェクトを作成するという意味です。
mySpace || {};
の部分が「???」と思う人がいるかもしれません。
この部分はショートカット演算といわれる記述方法で、
普通に if 文を使って書くと次のような記述になります。
var mySpace;
if (!mySpace){
mySpace = {};
}
最初の記述の方がシンプルですよね。ですから通常、名前空間を作成する場合は、最初に記述したような ショートカット演算を用いて記述します。
名前空間を作成したら、後は「名前空間.変数(関数)」というように記述します。
このように「名前空間」を使って名前の衝突を回避することができます。
mySpace.id = ... ;
mySpace.showId = ... ;
名前空間を階層化する
名前空間を階層化する場合は、最初に作成した「名前空間用オブジェクト」のプロパティとして、 新たに空のオブジェクトを作成します。
// 名前空間作成
var mySpace = mySpace || {};
// 名前空間を階層化
mySpace.student = {};
mySpace.teacher = {};
使用する場合は次のように使用します。
mySpace.student.id = ....;
mySpace.teacher.name = ....;
名前空間をクラスに適用する場合は、次の記事を参考にしてください。
関連記事: 名前空間をクラスに適用する