javascript 命名空间

    如果页面的js内容比较少的 时候,确实命名空间的意义是没有的 但是 当 有很多的 .js的 外部连接的 时候

命名空间的 作用还是 可以体现出来的 如某2个人共同写 一个 项目    都有一个叫 bind的函数  但是参数却不一样

这时,当2个项目合到 一起的 时候肯定会出问题的...  这里命名空间的 好处就显示出来了...

 

一个例子

var YAHOO = window.YAHOO || {};
YAHOO.namespace = function(ns) {
     if (!ns || !ns.length) {return null;};
   var levels = ns.split(".");
   var nsobj = YAHOO;
   //如果申请的命名空间是在YAHOO下的,则必须忽略它,否则就成了YAHOO.YAHOO了
   for (var i=(levels[0] == "YAHOO") ? 1 : 0; i<levels.length; ++i) {
   //如果当前命名空间下不存在,则新建一个关联数组。
   nsobj[levels[i]] = nsobj[levels[i]] || {};
   nsobj = nsobj[levels[i]];
   }
   //返回所申请命名空间的一个引用;
   return nsobj;
};

//可以这么 用
var wt = YAHOO.namespace("wt");
wt.bind =function(){alert('a')};

 

下面一个是拍拍的写法(也就是我最后次面试的)

function $namespace(str){

	var arr=str.split(',');

	for(var i=0;i<arr.length;i++){

		// 将命名空间切成N部分, 比如mini、common等

		arr[i]=arr[i].split(".");

		str= "";

		var strEval= "";		

		for (var j = 0; j < arr[i].length; j++){

			if (j!= 0){str += "."};

			str += arr[i][j];

			// 依次创建构造命名空间对象(假如不存在的话)的语句

			// 比如先创建mini,然后创建mini.common依次下去

			strEval += "if (typeof(" + str + ") == 'undefined'){" + str + " = {}};";

		};

		if(strEval != ""){eval(strEval)};

}



可以直接去拍拍看他们的代码.........

};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值