rp.*_*rp. 10 javascript namespaces
我有一个JavaScript"对象",以这种方式构建:
function foo()
{
this.length = 0;
}
foo.prototype.getLength = function()
{
return this.length;
}
...
Run Code Online (Sandbox Code Playgroud)
我知道如何使用单例JavaScript对象模拟命名空间,但是什么是"命名空间"对象的最佳方法,如上面的那些将会有什么意义呢?
我知道有几个JavaScript库具有名称间距功能,但我使用的是jQuery,而不想添加其他库.我希望能够提供我自己的,也许是通过利用jQuery,我需要实例化的JS对象的内部命名空间方案.
谢谢rp
Jas*_*ing 12
简单:
if(!MyNamespace) MyNamespace = {};
MyNamespace.foo = function() {
this.length = 0;
};
MyNamespace.foo.prototype.getLength = function() {
return this.length;
};
Run Code Online (Sandbox Code Playgroud)
Javascript实际上没有像其他语言那样的命名空间或包.相反,它有闭包.如果您的应用程序包含多个函数,变量和对象,那么您应该将它们放在一个全局对象中.这将与命名空间具有相同的效果.
例如:
var namespace = {
this.foo: function(){
...
},
this.foo.prototype.getLength: function(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以创建一组嵌套对象并模拟包:
loadPackage = function(){
var path = arguments[0];
for(var i=1; i<arguments.length; i++){
if(!path[arguments[i]]){
path[arguments[i]] = {};
}
path = path[arguments[i]];
}
return path;
}
loadPackage(this, "com", "google", "mail") = {
username: "gundersen",
login: function(password){
...
}
}
this.com.google.mail.login("mySecretPassword");
Run Code Online (Sandbox Code Playgroud)