プロジェクトに JavaScript 名前空間を実装したいと考えています。同僚と私は JavaScript の専門家ではないため、シンプルで効率的な名前空間のアプローチを探しています。可読性は優れた資産です。私たちは Java 開発者であり、JavaScript の罠にはまりやすいのです。
以下の概念実証を作成しました。
<html><body><script>
var mynamespace = {};
mynamespace.variable = "inside mynamespace";
mynamespace.level1 = {};
mynamespace.level1.level2 = {};
(function(){
this.variable = "inside mynamespace.level1";
this.print = function(){ return "print() : " + this.variable };
}).apply(mynamespace.level1);
(function(){
this.variable = "inside mynamespace.level1.level2";
this.print = function(){ return "print() : " + this.variable };
}).apply(mynamespace.level1.level2);
// We can use "that" instead of "this"; however I do not see any benefit in doing it...
(function(){
if(!mynamespace.level1.level2b){ this.level2b = {}; var that = this.level2b };
that.variable = "inside mynamespace.level1.level2b";
that.print = function(){ return "print() : " + this.variable };
}).apply(mynamespace.level1);
document.write(mynamespace.level1.print() + "<br>"); // print() : inside mynamespace.level1
document.write(mynamespace.level1.variable + "<br>");// inside mynamespace.level1
document.write(mynamespace.level1.level2.print() + "<br>");// print() : inside mynamespace.level1.level2
document.write(mynamespace.level1.level2.variable + "<br>");// inside mynamespace.level1.level2
document.write(mynamespace.level1.level2b.print() + "<br>");// print() : inside mynamespace.level1.level2b
document.write(mynamespace.level1.level2b.variable + "<br>");// inside mynamespace.level1.level2b
document.write(mynamespace.variable + "<br>");// inside mynamespace
document.write(mynamespace.something + "<br>");// undefined
</script></body></html>
=== 質問 ===
Q1. それは良いアプローチだと思いますか?
Q2. 陥る可能性のある落とし穴はありますか?
Q3. より良い提案はありますか (単純さ、読みやすさを考慮してください)。
どんな助けでも大歓迎です。
乾杯、
編集: jQuery を使用します。したがって、jQuery を使用したより良いアプローチが考えられます。