zoukankan      html  css  js  c++  java
  • JavaScript中的namespace

     1  <head>
     2   <title> New Document </title>
     3   <script>
     4   var global = window.global||{};
     5   global.version = '1.1';
     6   global.author = 'SL';
     7   global.namespace = function (_namespace) {
     8     var levels = _namespace.split('.'); 
     9     var obj = global; 
    10     for (var i = (levels[0] == 'gloabl') ? 1 : 0; i < levels.length; ++i) { 
    11         obj[levels[i]] = obj[levels[i]] || {}; 
    12         obj = obj[levels[i]]; 
    13         } 
    14     };
    15   global.namespace('test');
    16   global.test.init = function(){
    17   alert("123");
    18   }
    19   window.onload=  global.test.init;
    20   </script>
    21   </head>
    22  <body>
    23 hello,world?!
    24  </body>
    25 </html>


    上面是自己写的一个,然后我从网上看到了一个写的不错的,可以看出是个对JavaScript了解的比较深入细致的一个人(http://www.cnblogs.com/kuikui/archive/2013/07/14/3190381.html)

    /**
    * 创建全局对象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();


     

  • 相关阅读:
    ef core中如何实现多对多的表映射关系
    asp.net mvc 实现简单的实时消息推送
    C#中三层架构UI、BLL、DAL、Model实际操作
    搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi
    基于.NET Core 框架搭建WebApi项目
    16位GUID
    VS2017企业版的密钥
    通过微软的cors类库,让ASP.NET Web API 支持 CORS
    Web API 跨域访问(CORS)
    [HDU1394]Minimum Inversion Number
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/3714403.html
Copyright © 2011-2022 走看看