浅析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 相关文章推荐
用jQuery扩展自写的 UI导航
Jan 13 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
JS Canvas定时器模拟动态加载动画
Sep 17 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
简单实现js上传文件功能
Aug 21 Javascript
Bootstrap模态对话框用法简单示例
Aug 31 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python版简单工厂模式
2017/10/16 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
支部书记四风对照材料
2014/08/28 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
Python合并pdf文件的工具
2021/07/01 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
python实现双向链表原理
2022/05/25 Python
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技