with
JavaScriptでのキーワードの使用に関する投稿、質問、記事をたくさん読んできました。記事の中には、Javascript のキーワードの使用を警告しているものがあるwith
ので、私の使用法が適切かどうかを知りたいです。
私のプログラミング経験のほとんどは C# と Java でした。そのため、関連するオブジェクトを作成するとき、それらの名前空間は理にかなっています。
私が試みているアプローチは、最初にルート名前空間をグローバルにアクセス可能なオブジェクトとして作成することです。オブジェクトのメンバーは、オブジェクトでもある最初のレベルの名前空間です。
名前空間にオブジェクトを追加するときは、Javascriptwith
キーワードを使用して、with のスコープ内で引数のメンバーにローカルでアクセスできるようにします。名前空間を移動するときは、with
s をネストし、入力する名前空間に引数を設定します。
次に例を示します。
var Namespace = {
SubNamespace1: {},
SubNamespace2: {}
}
with (Namespace) {
with (SubNamespace1) {
SubNamespace1.FirstClass = {
foo: function() {
SecondClass.bar();
},
bar: function() {
SecondClass.foo();
}
},
SubNamespace1.SecondClass = {
foo: function() {
FirstClass.bar();
},
bar: function() {
FirstClass.foo();
}
}
}
with (SubNamespace2) {
SubNamespace2.FirstClass = {
foo: function() {
SecondClass.bar();
},
bar: function() {
SecondClass.foo();
}
},
SubNamespace2.SecondClass = {
foo: function() {
FirstClass.bar();
},
bar: function() {
FirstClass.foo();
}
}
}
}