浅析JavaScript中命名空间namespace模式


Posted in Javascript onJune 22, 2016

namespace即“命名空间”,也称“名称空间” 、”名字空间”。JavaScript不像C#或Java,有专门的namespace和package语法支持,当JS复杂到一定程度,尤其是引用大量的第三方JS框架和类库之后,命名冲突就会成为一个严重的问题,因此使用JS自己的变通方式建立命名空间很重要。

命名空间有助于减少程序中所需要的全局变量的数量,并且同时有助于避免命名冲突或过长的名字前缀。

关于命名空间的例子:

/**
* 创建全局对象MYAPP
* @module MYAPP
* @title MYAPP Global
*/
var MYAPP = MYAPP || {};
/**
* 返回指定的命名空间,如果命名空间不存在则创建命名空间。
* 备注:命名时需小心,注意保留关键字,可能在一些浏览器无法使用。
*
* @method namespace
* @param {String *} 至少需要创建一个命名空间
* @return {Object} 最后一个命名空间创建的对象的引用
*/
MYAPP.namespace = function(str){
var parts = str.split("."),
parent = MYAPP,
i=0,
l=0;
if(parts[0]==="MYAPP"){
parts = parts.slice(1);
}
for(i=0,l=parts.length; i<l;i++){
if(typeof parent[parts[i]] === "undefined"){
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}
/**
* bfun是Basic Functions Extended的缩写
* 作用:包括数组、字符串等等数功能扩展
*
* @module bfun
*/
MYAPP.bfun = {
array:(function(){
return {
/**
* @method isArray 判断是否为数组
* @param {Array} 数组
* @return {Boolean} 真返回true,否则返回false
*/
isArray: function(){
return Object.prototype.toString.call(arguments[0]) === '[object Array]'; 
},
/**
* @method inArray 检查值是否在数组中
* @param {value,Array} 值,数组
* @return {Boolean} 真返回true,否则返回undefined
*/
inArray: function(val,arr){
for(var i=0,l=arr.length;i<l;i++){
if(arr[i] === val){
return true;
}
}
}
}
})(),
string:(function(){
return {
/**
* @method trim 过滤字符串两边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
trim: function(){
return arguments[0].replace(/(^\s*)|(\s*$)/g, "");
},
/**
* @method ltrim 过滤字符串左边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
ltrim: function(){
return arguments[0].replace(/^s+/g, "");
},
/**
* @method rtrim 过滤字符串右边多余的空格
* @param {String} 字符串
* @return {String} 字符串
*/
rtrim: function(){
return arguments[0].replace(/s+$/g, "");
}
}
})()
}
// 测试
MYAPP.test = {
init: function(){
// 使用对应的模块先引用
var marray = MYAPP.namespace("MYAPP.bfun.array");
var mstring = MYAPP.namespace("MYAPP.bfun.string");
var arr = ["a","b"];
var str = " abc ";
console.log("判断是否为数组:" + marray.isArray(arr));
console.log("值是否在数组中:" + marray.inArray("a",arr));
console.log("过滤左右空格:" + mstring.trim(str));
}
}
MYAPP.test.init();

以上所述是小编给大家介绍的JavaScript中命名空间namespace模式的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
jQuery实现自定义下拉列表
Jan 05 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
详解TS数字分隔符和更严格的类属性检查
May 06 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 #Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 #Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 #Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 #Javascript
Json解析的方法小结
Jun 22 #Javascript
JS实现刷新父页面不弹出提示框的方法
Jun 22 #Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 #Javascript
You might like
一个高ai的分页函数和一个url函数
2006/10/09 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
php实现微信发红包功能
2018/07/13 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python中lambda与def用法对比实例分析
2015/04/30 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python3使用requests发闪存的方法
2016/05/11 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
python pandas时序处理相关功能详解
2019/07/03 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python安装gdal的两种方法
2019/10/29 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
mysql有关权限的表都有哪几个
2015/04/22 面试题
医院办公室主任职责
2013/12/29 职场文书
白酒市场开发计划书
2014/01/09 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
产品销售计划书
2014/05/04 职场文书
应聘护士求职信
2014/07/21 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS