js的命名空间学习

function ns(pac){
	    if(!pac)
		{
		   return null;		
		}
		var arr=pac.split(".");
		var tt=window[arr[0]];
		var cc=window.c2;
		window.c2={};
		
		var tt2=window[arr[0]]||{};
		var o=window[arr[0]]=window[arr[0]]||{};
		var result=o;
		var len=arr.length;
		for(var i=1;i<len;i++)
		{
		
		   o=o[arr[i]]=o[arr[i]]||{};
		}
	 return result;
	}
	ns("com.yumei.test");
	ns("com.yumei.mytest");
	com.yumei.test.fn=function(){
	    alert("test");
	};
	
	alert(com.yumei.test.fn);

 上面的函数就是建立命名空间的函数,有几个知识点,是学到这里才稍微明白点的。

1:var tt=window[arr[0]];//这个时候tt的值是undefined,因为这个时候window的arr[0]这个属性没有值。

     原因是arr[0]没有人赋值给它。arr[0]={};这个才是赋值。

     同理cc开始也是undefined。

     window.cc={};这个时候window就有cc这个属性啦。

2:命名空间是个全局的变量,所以按照设计应该放到window下面缓存起来就最合适啦。

3:var o=window[arr[0]]=window[arr[0]]||{};

    起到的作用是先判断window是否有arr[0]这个属性有就第二个等号赋值覆盖,没有就赋值为{};

    ||的作用是从左到右直到取到有效的值才停止。所谓有效的值是除0,null,undefined,'',NaN

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值