资源描述:
《浅析JavaScript中命名空间namespace模式.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、浅析JavaScript中命名空间namespace模式namespace即“命名空间”,也称“名称空间”、”名字空间”。JavaScript不像C#或Java,有专门的namespace和package语法支持,当JS复杂到一定程度,尤其是引用大量的第三方JS框架和类库之后,命名冲突就会成为一个严重的问题,因此使用JS自己的变通方式建立命名空间很重要。命名空间有助于减少程序中所需要的全局变量的数量,并且同时有助于避免命名冲突或过长的名字前缀。关于命名空间的例子:/***创建全局对象MYAPP*moduleMYAPP^titleMYAPPGlobal*/varMYAPP=
2、MYAPP
3、
4、{};/***返回指定的命名空间,如果命名空间不存在则创建命名空间。*备注:命名时需小心,注意保留关键字,可能在一些浏览器无法使用。*methodnamespace*param{String*}至少需要创建一个命名空间^return{Object}最后一个命名空间创建的对象的引用*/MYAPP.namespace二function(str){varparts=str・split(〃・〃),pa.rent二MYAPP,i=0,1=0;if(parts[0]二二二〃MYAPP"){parts=parts・slice(1);}for(i=0,l=parts.len
5、gth;ilt;1;i++){if(typeofparent[parts[i]]二二二〃undefined"){parent[parts[i]]={};}parent二parent[parts[i]];}returnparent;/***bfun是BasicFunctionsExtended的缩写*作用:包括数组、字符串等等数功能扩展**modulebfun*/MYAPP.bfun二{array:(function(){return{/***methodisArray判断是否为数组*param{Array}数组*return{Boolean}真返回true,否则返回fal
6、se*/isArray:function(){returnObject・prototype・toString.call(arguments[0])二二二'[objectArr且y]‘:nbsp;},/***methodinArray检查值是否在数组中^param{value,Array}值,数组*return{Boolean}真返回true,否贝U返回undefinedinArray:function(val,arr){for(vari=0,l=arr・length;ilt:1:i++){if(arr[i]==va1){returntrue;})(),string:(fu
7、nction(){return{/**^methodtrim过滤字符串两边多余的空格*param{String}字符串*return{String}字符串trim:funotion(){returnarguments[0]・replace(/(^s*)
8、(s*$)/g,^methodltrim过滤字符串左边多余的空格*param{String}字符串*return{String}字符串*/ltrim:function(){returnarguments[O]・replace(/^s+/g,“〃);},/**^methodrtrim过滤字符串右边多余的空格*param{
9、String}字符串*return{String}字符串*/rtrim:function(){returnarguments[0]・replace(/s+$/g,〃“);}}})()}〃测试MYAPP.test={init:function(){//使用对应的模块先引用varmarray=MYAPP・namespace(〃MYAPP・bfun.array/z);varmstring二MYAPP・n且mespace(Z/MYAPP・bfun.st•〃ring);「〃〃〃1〃-]vararr=La,b」;varstr=//abc〃;console.logC判断是否为数组:〃
10、+marray.isArray(arr));console.log(/z值是否在数组中:〃+marray.inArray("a",arr));console・log(“过滤左右空格:z,+mstring.trim(str));}}MYAPP.test.initO:以上所述是小编给大家介绍的JavaScript中命名空间namespace模式的全部叙述,希望对大家有所帮助