JavaScriptで名前空間(もどき)を使用する方法 | JavaScript / jQuery

※当サイトはアフィリエイト広告を利用しています。

JavaScriptはたとえ.jsファイル内で定義された変数や関数であってもグローバル(関数内で定義された変数はローカル変数)になります。

そのため、単純な名前の変数や関数を使用すると他のライブラリと衝突することがあります。

他の言語ではこうした名前の衝突を避けるために名前空間の概念がありますが、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となります。

まとめ

この記事ではJavaScriptで名前の衝突を避けるために、名前空間もどきを使用する方法を紹介しました。