六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 63|回复: 0

js的名字空间用例

[复制链接]

升级  26%

84

主题

84

主题

84

主题

举人

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2013-1-27 05:28:13 | 显示全部楼层 |阅读模式
<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>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表