zoukankan      html  css  js  c++  java
  • 关于js中namespace命名空间模式

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

    关于命名空间的例子:

      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();
  • 相关阅读:
    蒲公英 &#183; JELLY技术周刊 Vol.29: 前端智能化在阿里的那些事
    蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布
    蒲公英 &#183; JELLY技术周刊 Vol 27: 平平无奇 React 17
    蒲公英 &#183; JELLY技术周刊 Vol.26: 请问您这个月要来点肝么?
    《痞子衡嵌入式半月刊》 索引
    痞子衡嵌入式:恩智浦MCU集成开发环境与开发工具教程
    《痞子衡嵌入式半月刊》 第 21 期
    痞子衡嵌入式:了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点
    痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程
    痞子衡嵌入式:一个奇怪的Keil MDK下变量链接强制对齐报错问题(--legacyalign)
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/5392220.html
Copyright © 2011-2022 走看看