そのため、単純な名前の変数や関数を使用すると他のライブラリと衝突することがあります。
他の言語ではこうした名前の衝突を避けるために名前空間の概念がありますが、JavaScriptには名前空間の概念はありません。
この記事ではJavaScriptで名前の衝突を避けるために、名前空間もどきを使用する方法を紹介します。
=== 目次 ===
JavaScriptで名前空間(もどき)を使用する方法
JavaScriptには名前空間はありませんが、クラスに対して変数や関数を宣言することはできます。そのため、以下のようにすると名前空間のように使用することができます。
mylib = mylib || {};
(function(global) {
var _ = mylib;
_.count = 1; //変数
_.print(str) = (str) => { //関数
console.log(str);
};
});
冒頭でOR結合をとっているのは、このJavaScriptファイルを重複して読み込んだりしたときに、最初に宣言していたオブジェクトが上書きされるのを避けるためです。
ここで宣言した変数や関数にアクセスするには以下のようにします。
console.log(mylib.count);
mylib.print("OK");
あたかも名前空間のように使えていますね。
もちろんmylibの外からこの変数や関数にアクセスしようとしてもundefinedとなります。