Perlの場合、Exporterなどの仕組みを使えば
のように記述するだけで、Current Packageにそれぞれの関数を貼り付けることができます。
あるいは
のように、完全限定名(Full Qualified Name)でアクセスすることでもその名前空間上のメソッドを利用することができます。
jsの場合では完全限定名を利用すれば同じように利用することができます。
一方、Exporterのように現在のスコープに貼り付けるにはwithブロックを使います。
しかし、withの動作をしっかり把握できない場合にwithを多用することはjavascriptのプログラム作法からは
推奨されません。
そのかわりに一時的にその名前空間をテンポラリな変数に別名をつけて利用することもできます。
どちらも、問題なく動作します。
JS.Namespaceライブラリではこれらの利便性を考えて
などの記述を可能にします。
またネームスペース自体に追記がなく、use XXX qw(hoge)のようにただ関数やオブジェクトを利用するだけの場合
このように記述することができます。
jsには予約語としてnamespaceが定義されているけどブラウザじゃ使えませんし、Rhinoなどの一部の処理系を除いて、意味を成さないんですが、var namespace = hogehoge;みたいな記述は避けてください。
« 再入門JavaScript - 名前空間 – 再入門JavaScript - 動的ローディング »
No comments yet.