【发布时间】:2012-01-28 21:17:01
【问题描述】:
我想知道是否有办法将命名空间保持在 Javascript 对象的函数范围内。
首先,让我们设置一些东西。假设我们在命名空间 FooBar 中有一个类(嗯,与 Javascript 一样接近类)Foo。然后在全局命名空间(窗口)中,我们有类 Bar,它实例化了 Foo,所以...
FooBar.Foo = function() {
}
function Bar() {
this.init();
}
Bar.prototype = {
init: function() {
this.foo = new FooBar.Foo();
}
}
目前,我有两个系统可以将事物纳入范围: 1. using("FooBar") 和 unusing("FooBar") 这些函数将给定命名空间的内容的引用移入和移出全局命名空间 2. with(namespace("FooBar")) {} 这使用正常的 with 行为,给它一个对象,其中包含对命名空间中包含的所有内容的引用。 所以现在,我必须在每个函数中使用其中一种方法来将命名空间纳入范围。我正在尝试查看是否有一种方法可以在声明类时定义它们,并且由于某种关闭,它们仍然在这个类的范围内......
FooBar.Foo = function() {
}
using("FooBar");
function Bar() {
this.init();
}
Bar.prototype = {
init: function() {
this.foo = new Foo();
}
}
unusing("FooBar");
所以,是的,这样的事情是否可能,或者我是否经常将这些内容纳入范围?
【问题讨论】:
标签: javascript namespaces closures