[转]---js中实现namespace(名字空间)的一种方法。
51js上 月影 写的
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script>
__namespace__({com:{akira:{test:
(function(){
function A()
{
A.prototype.a = function(){alert('A in a');}
}
function B()
{
B.prototype.a = function(){alert('A in b');}
}B.prototype = new A(),B.prototype.base = new A();
return {A:A,B:B};
})()
}}})
var a = new com.akira.test.A();
a.a();
try{a = new A();}catch(e){alert("Class A not found in __global__!");}
__using__(com.akira.test);
var b = new B();
b.a();
__unlink__(com.akira.test);
try{b = new B();}catch(e){alert("Class B not found in __global__!");}
with(com.akira.test)
{
var c = new B();
c.base.a();
}
/********************************************************
Javascript namespaces V1.00 author Akira
*********************************************************/
function __namespace__(ns,parent)
{
if(parent == null) parent = self;
for(var each in ns)
{
if(parent[each] != null)
__namespace__(ns[each],parent[each]);
else
parent[each] = ns[each];
}
return;
}
function __using__(ns)
{
for(var each in ns)
if(self[each]==null) self[each] = ns[each];
}
function __unlink__(ns)
{
for(var each in ns)
{
if(self[each] == ns[each]) self[each] = null;
}
}
</script>
</BODY>
</HTML>