在一些面向对象的语言中有命名空间的概念,好处就是把不同的类放在不同的文件夹下面,这样就不会发生命名冲突,当然命名空间还有其他的作用。
在这里我们讨论的是在JS中怎么使用命名空间。当然JS并没有提供原生的方式。我们可以这样做:
1、 我们创建一个空对象,例如:var nameSpace = {}; 我们就可以在这个空对象里面写函数了,这个是最简单的方式。
2、我们如果需要一个类似于java命名空间,例如:com.baibin.assess,那我们怎么办呢?
比较蠢的办法是
var com = {
baibin:{
assess:{}
}
};
写起来也是非常麻烦的,其实原理就是这样的。现在我们来提供一直jquery的扩展,如下:
;(function($) {
$.extend({
reg: function(pageage) {
var arr = pageage.split(".");
var ns = "";
for (var i = 0; i < arr.length; i++) {
if (i > 0) ns += ".";
ns += arr[i];
eval("if(typeof(" + ns + ") == 'undefined') " + ns + " = new Object();");
}
}
}); })(jQuery);
我用的是jquery扩展的方式,这样我们调用的时候就可以类似:
$.reg("com.baibin.assess");
使用方式:
com.baibin.assess.add = function() { };
这样我们就可以在com.baibin.assess这样的命名空间里进行编码了,当然写起来可能比较麻烦,你可以把命名空间写的短些。