这是在javascript中创建名称空间的好方法吗?
我一直在阅读大量关于在JavaScript中使用这是在javascript中创建名称空间的好方法吗?,javascript,javascript-namespaces,Javascript,Javascript Namespaces,我一直在阅读大量关于在JavaScript中使用with关键字的帖子、问题和文章。有些文章警告不要使用Javascript的with关键字,因此我想知道我的使用是否合适 我的大部分编程经验都是用C#和Java编写的,所以在创建相关对象时,给它们命名对我来说很有意义 我尝试的方法是首先将根命名空间创建为全局可访问的对象。对象成员是一级名称空间,也是对象 在向名称空间添加对象时,我使用Javascriptwith关键字使参数的成员在with的范围内可以本地访问。在名称空间中移动时,可以使用s嵌套,并
with
关键字的帖子、问题和文章。有些文章警告不要使用Javascript的with
关键字,因此我想知道我的使用是否合适
我的大部分编程经验都是用C#和Java编写的,所以在创建相关对象时,给它们命名对我来说很有意义
我尝试的方法是首先将根命名空间创建为全局可访问的对象。对象成员是一级名称空间,也是对象
在向名称空间添加对象时,我使用Javascriptwith
关键字使参数的成员在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();
}
}
}
}
不建议将与
一起使用<代码>with
将在ES5 strict plus中抛出一个错误。最好不要用它。你不能用完整的路径吗?或者一个模块模式?读一读,它可能会帮助你建立一个坚实的名称空间