浅析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 相关文章推荐
Javascript 静态页面实现随机显示广告的办法
Nov 17 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
ejs v9 javascript模板系统
Mar 21 Javascript
js实现单一html页面两套css切换代码
Apr 11 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
Angularjs中数据绑定的实例详解
Aug 25 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
微信小程序 checkbox使用实例解析
Sep 09 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
php实现的一个简单json rpc框架实例
2015/03/30 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
PHP7新功能总结
2019/04/14 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
部队学习十八大感言
2014/01/11 职场文书
业务部主管岗位职责
2014/01/29 职场文书
收银员岗位职责
2014/02/07 职场文书
装配出错检讨书
2014/09/23 职场文书
十八大宣传标语
2014/10/09 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL