关于js中namespace命名空间模式

news/2024/7/8 4:43:48

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

关于命名空间的例子:

  1 /**
  2 * 创建全局对象MYAPP
  3 * @module MYAPP
  4 * @title MYAPP Global
  5 */
  6 var MYAPP = MYAPP || {};
  7 
  8 /**
  9 * 返回指定的命名空间,如果命名空间不存在则创建命名空间。
 10 * 备注:命名时需小心,注意保留关键字,可能在一些浏览器无法使用。
 11 *
 12 * @method namespace
 13 * @param {String *} 至少需要创建一个命名空间
 14 * @return {Object} 最后一个命名空间创建的对象的引用
 15 */
 16 MYAPP.namespace = function(str){
 17     var parts = str.split("."),
 18     parent = MYAPP,
 19     i=0,
 20     l=0;
 21 
 22     if(parts[0]==="MYAPP"){
 23         parts = parts.slice(1);
 24     }
 25     for(i=0,l=parts.length; i<l;i++){
 26         if(typeof parent[parts[i]] === "undefined"){
 27             parent[parts[i]] = {};
 28         }
 29         parent = parent[parts[i]];
 30     }
 31     return parent;
 32 }
 33 
 34 /**
 35 * bfun是Basic Functions Extended的缩写
 36 * 作用:包括数组、字符串等等数功能扩展
 37 *
 38 * @module bfun
 39 */
 40 MYAPP.bfun = {
 41     array:(function(){
 42         return {
 43             /**
 44             * @method isArray 判断是否为数组
 45             * @param {Array} 数组
 46             * @return {Boolean} 真返回true,否则返回false
 47             */
 48             isArray: function(){
 49                 return Object.prototype.toString.call(arguments[0])  === '[object Array]'; 
 50             },
 51             /**
 52             * @method inArray 检查值是否在数组中
 53             * @param {value,Array} 值,数组
 54             * @return {Boolean} 真返回true,否则返回undefined
 55             */
 56             inArray: function(val,arr){
 57                 for(var i=0,l=arr.length;i<l;i++){
 58                     if(arr[i] === val){
 59                         return true;
 60                     }
 61                 }
 62             }
 63         }
 64     })(),
 65     string:(function(){
 66         return {
 67             /**
 68             * @method trim 过滤字符串两边多余的空格
 69             * @param {String} 字符串
 70             * @return {String} 字符串
 71             */
 72             trim: function(){
 73                 return arguments[0].replace(/(^\s*)|(\s*$)/g, "");
 74             },
 75             /**
 76             * @method ltrim 过滤字符串左边多余的空格
 77             * @param {String} 字符串
 78             * @return {String} 字符串
 79             */
 80             ltrim: function(){
 81                 return arguments[0].replace(/^s+/g, "");
 82             },
 83             /**
 84             * @method rtrim 过滤字符串右边多余的空格
 85             * @param {String} 字符串
 86             * @return {String} 字符串
 87             */
 88             rtrim: function(){
 89                 return arguments[0].replace(/s+$/g, "");
 90             }
 91         }
 92     })()
 93 }
 94 
 95 // 测试
 96 MYAPP.test = {
 97     init: function(){
 98         // 使用对应的模块先引用
 99         var marray = MYAPP.namespace("MYAPP.bfun.array");
100         var mstring = MYAPP.namespace("MYAPP.bfun.string");
101 
102         var arr =  ["a","b"];
103         var str = "   abc  ";
104 
105         console.log("判断是否为数组:" + marray.isArray(arr));
106         console.log("值是否在数组中:" + marray.inArray("a",arr));
107         console.log("过滤左右空格:" + mstring.trim(str));
108     }
109 }
110 
111 MYAPP.test.init();

 

转载于:https://www.cnblogs.com/jiangxiaobo/p/5392220.html


http://www.niftyadmin.cn/n/3124510.html

相关文章

react全家桶项目,cuckoo

https://gitee.com/guozia007/cuckoo

Ios转场动画,type动画类型,跳转控制器动画

2019独角兽企业重金招聘Python工程师标准>>> 转场动画是针对view图层的动画 #import "DYViewController.h"interface DYViewController () property (weak, nonatomic) IBOutlet UIImageView *imageView;property (nonatomic, assign) int index;endimple…

spark知识点_RDD

来自官网的Spark Programming Guide&#xff0c;包括个人理解的东西。 这里有一个疑惑点&#xff0c;pyspark是否支持Python内置函数&#xff08;list、tuple、dictionary相关操作&#xff09;&#xff1f;思考加搜索查询之后是这么考虑的&#xff1a;要想在多台机器上分布式处…

工作笔记——js前端规范

去年年末做了一个项目&#xff0c;因为第一次做前端管理职位&#xff0c;第一次做整个项目的前端架构很多东西都不熟悉&#xff0c;作为一次大胆的尝试。 js方面的只有一个坑&#xff0c;那就是前端与后端的网络层封装&#xff0c;这一块是在后端的协助下开发的。网络层封装的过…

ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)(续)纯代码...

完整代码如下&#xff1a; <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"/><title>地图-Test </title><link href"arcgis_js_v39_api/arcgis_js_api/library/3.9/3.9compact/js/do…

后台多任务多线程断点下载

忘记图&#xff1a; 多线程断点下载事实上不是非常难。主要就是三个方面&#xff1a; 1、依据文件的大小和下载线程的数量&#xff0c;确定每一个下载线程要下载的切割文件的大小&#xff1b; 2、记录每一个下载线程已经下载完毕的进度。 3、将每一个线程下载的切割的文件合并到…

对用户上传的图片的尺寸进行等比缩放,size大小进行压缩

图片压缩和缩放的操作操作背景背景1背景2背景3知识结构核心要点功能拓展案例操作参考文档操作背景 背景1 当前手机相机的像素极高&#xff0c;随便拍个照片都是尺寸3000*4000 px的&#xff0c;大小都在5M以上。 背景2 而服务器在接收图片时&#xff0c;为减轻服务器压力&am…

给json数组添加新字段并赋值

zNodes.forEach(function(item) { item.newtitle "点击加号设为主席会场"; });转载于:https://www.cnblogs.com/penghq/p/7661759.html