我一直在阅读有关在JavaScript中使用with
关键字的大量帖子,问题和文章。一些文章警告不要使用Javascript的with
关键字,所以我想知道我的用法是否合适。
我的大多数编程经验都是在C#和Java中,因此在创建相关对象时,命名空间对我来说很有意义。
我正在尝试的方法是首先将根命名空间创建为全局可访问的对象。对象成员是第一级命名空间,它们也是对象。
何时将对象添加到命名空间,我使用Javascript with
关键字使本地的成员可以使用with的范围进行访问。在名称空间中移动时,嵌套with
并将参数设置为要输入的名称空间。
以下是一个例子:
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();
}
}
}
}