JavaScriptには名前空間がないので、オブジェクトを代わりに使います。
Namespace.hoge = "ほげほげ";
Namespace.fuga = function() {};
こんな感じでオブジェクトのプロパティを追加していくことで、グローバルスコープを汚さずに済みます。
それだけではなく、JavaScriptだとグローバルスコープに宣言するよりも速いらしいです。
ただし、名前空間がcom.example.foo.barといったように長ったらしくなると、宣言が面倒になってくるのでクロージャを使って凌ぎます。
以上がオライリーのパクリ。
で、ここからが本題。
自分で書いたコードはこうやって気をつければ良いんですが、人様のライブラリだとそうはいきません。改変して使うのは気が引けるしライセンス違反だったりもします。
しかし、上記のサンプルの、
//匿名関数内に変数や関数を定義していく。
の部分だけAjaxで読み込んでクロージャ内に展開してしまえばなんとかなるかもしれない、と思って関数を作ってみました。
使い方:
■読み込むファイル(hoge.js)
■使う側のコード
動作確認
代入用コードとやらがダサダサなのが致命的だなぁ。
そして、自分がライブラリ以外のコードにも名前空間使うように徹底すれば衝突しないじゃん!!
と今気付いたのは絶対秘密。泣いちゃうから。
いや、でも、ほら、読み込む外部ライブラリが複数あったりした場合とかさ……。
2008年03月27日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/13176556
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/13176556
この記事へのトラックバック