不支持命名空间一直是JS开发里比较严重的问题。不过大家想出了各种手段来绕过这个坎,比如YUI的namespace。可惜的是jQuery尚未提供一个合适的解决方案,不过这并不难,可以人肉给它添加这个方法。稍加搜索,找到两个地址介绍此方法,附在最后。
先上代码:
// 把生成命名空间的方法绑定在jQuery上
jQuery.namespace = function() {
var a=arguments, o=null, i, j, d;
for (i=0; i<a.length; i=i+1) {
d=a[i].split(".");
o=window;
for (j=0; j<d.length; j=j+1) {
o[d[j]]=o[d[j]] || {};
o=o[d[j]];
}
}
return o;
};
// 接着就可以使用此方法来定义命名空间了
jQuery.namespace( 'jQuery.debug' );
jQuery.debug.test1 = function()
{
alert( 'test1 function' );
};
jQuery.debug.test2 = function()
{
alert( 'test2 function' );
};
// usage
jQuery.debug.test1();
jQuery.debug.test2();
将上面这段js保存成jQuery.namespace.js,放在和jQuery一个目录里,以后写项目的时候就可以随时用到了。
最后附上原文链接:
Is it possible to create a namespace in jQuery?
Namespacing outside of theYAHOO Namespace
欢迎吐槽,共同进步