javascript命名空间

18 篇文章 0 订阅
9 篇文章 0 订阅

命名空间是为了避免重名带来的冲突问题,就像java里的包空间一样,在不同命名空间里的函数,变量,对象可以有相同的名字而不会相互干扰,javascript命名空间实现原理,主要是通过匿名闭包函数来实现,如果希望外部访问,则需要对外提供接口,否则外部没法访问,如下:

(function (){
    var result = {};
    function set(key,value)
    {
         result[id] = value;
    }
    function get(key)
    {
         return result[id]
     }
})();

使用这种伪命名空间可以封装并保护自己的所有函数、对象、变量,而且由于他们位于一个函数之中,相互之间也可以互相访问。不过伪命名空间之外的脚本就无法使用这些函数了。

对外开放接口有多重方法,如下:

1.  浏览器窗口有很多内置对象,其中window就是一个比较重要的内置对象,表示当前窗口是一个顶级变量,我们可以把要对外开放的接口赋值给一个window属性,然后就可以闭包外部调用。

<html>
<script>
(function (){
    var result = {};
    function set(key,value)
    {
         result[key] = value;
    }
    function get(key)
    {
         return result[key]
    }
    if(!window['fun'])
	window['fun'] = {};
	window['fun']['set'] = set;
	window['fun']['get'] = get;
})();
fun.set('id',1234);
var value = fun.get('id');
alert("id: "+value);
</script>
</html>

2. 通过return返回要对外开放的接口,如下:

<html>
<script>
var funs = (function (){
    var result = {};
    var outinterface = {};          //对外开放的接口
    function set(key,value)
    {
         result[key] = value;
    }
    function get(key)
    {
         return result[key]
    }
    outinterface.set = set;
    outinterface.get = get;
    return outinterface;
})();
funs.set('name','jim');
alert(funs.get('name'));
</script>
</html>

3. 当然还有很多其它的方法,来对外开放接口,可以看看一些开源的javascript框架,这种用法比较多



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值