不支持命名空间一直是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
欢迎吐槽,共同进步