基于JavaScript 下namespace 功能的简单分析

 更新时间:2013年07月05日 15:41:51   作者:  
前些天在剥离 百度随心听 的播放器引擎时,看到了一个namespace方法,觉得新奇,当然只是对于我自己而言,我入门js不久,经验尚浅
之前看到网易还是新浪还是什么什么网站来着,也是用类似这种东西的,当时对js只是九牛一毛的水平,当场被吓傻了。
但这次,我打算亲自分析下,以后在看到就不会迷茫了。
复制代码 代码如下:

//调用例子:bradio.namespace("bradio.lang.array");
 //下面是百度编译后的源码,变量都是a,b,c,d...之后我会重新写一个规范点的。
 //好了,开始分析
 bradio.namespace = function () { //创建命名空间
     var a = arguments, //["bradio.lang.array"]
         b = null, //用于存放上一级对象
         c, d, e, f; //c是计数器,d是内层循环的计数器,e是拆分后命名空间数组,f是arguments参数长度
     c = 0;
     for (f = a.length; c < f; c++) {
         e = ("" + a[c]).split("."); //拆分命名空间,拆分后 ["bradio", "lang", "array"]
         b = bradio; //基础对象,基于这个对象进行命名空间的添加
         for (d = "bradio" == e[0] ? 1 : 0; d < e.length; d++) //如果第一个是bradio, 就第二个开始遍历 ["bradio","lang","array"]
             b[e[d]] = b[e[d]] || {}, b = b[e[d]]
             //其实相当于
             //b[e[d]] = b[e[d]] || {} //如果当前对象已经操作就用当前对象,不存在就赋值空对象
             //b = b[e[d]] //用字对象覆盖b,接下去的循环基于子对象添加命名空间
     }
     return b//返回最后一层对象
 };

下面是整理后的,能看懂的版本
复制代码 代码如下:

//bradio.namespace("bradio.lang.array");
  bradio.namespace = function () { //创建命名空间
      var args = arguments,
          parent = null,
          arr, i, j, len;
      for (i=0, len = args.length; i < len; i++) {
          arr = ("" + args[i]).split(".");
          parent = bradio;
          for(j = "bradio" == arr[0] ? 1 : 0; j < arr.length; j++) {
              parent[ arr[j] ] = parent[ arr[j] ] || {};
              parent = parent[ arr[j] ];
          }
      }
      return parent;
  }

当然只是我的理解,如果哪里不是很对,还请各位大侠帮忙指出,以免误导了大家。

相关文章

  • js中基本事件的总结(onclick、onblur、onchange等)

    js中基本事件的总结(onclick、onblur、onchange等)

    事件是用户在网页上的交互行为如点击、滚动、按键等,JavaScript通过事件监听来响应这些行为,这里为大家分享一下,js中的基本事件,方便大家选择合适的触发形式
    2025-02-02
  • javascript冒泡排序小结

    javascript冒泡排序小结

    冒泡排序由于比较简单和容易理解,往往会成为人们首先想到的排序算法。最基本的想法就是在一次里面比较两个数字,并且确保他们在移动到其他项目之前有一个正确的顺序。在每一关结束,有价值的“排序”到正确的位置,最终只留下其他项目排序。
    2016-04-04
  • 告诉你什么是javascript的回调函数

    告诉你什么是javascript的回调函数

    在javascript中回调函数非常重要,它们几乎无处不在。像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply()函数的,或者有一些简短的关于callback的使用示例。
    2014-09-09
  • 详解JavaScript的Polymer框架中的通知交互

    详解JavaScript的Polymer框架中的通知交互

    这篇文章主要介绍了详解JavaScript的Polymer框架中的通知交互,Polymer是由Google开发的针对Web UI的前端框架,需要的朋友可以参考下
    2015-07-07
  • js实现图片局部放大效果详解

    js实现图片局部放大效果详解

    这篇文章主要介绍了js实现图片局部放大效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • javascript编程起步(第四课)

    javascript编程起步(第四课)

    javascript编程起步(第四课)...
    2007-01-01
  • js中对象的声明方式以及数组的一些用法示例

    js中对象的声明方式以及数组的一些用法示例

    本文为大家介绍下js中的对象声明方式以及数组的一些用法,下面有个不错的示例,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-12-12
  • 用JS实现一个TreeMenu效果分享

    用JS实现一个TreeMenu效果分享

    用JS实现一个TreeMenu效果分享,思路比较简单,但很实用
    2011-08-08
  • 详解JS-- 浮点数运算处理

    详解JS-- 浮点数运算处理

    本篇文章主要介绍了JS--浮点数运算处理,现在分享给大家,也给大家做个参考。感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • 浅谈javascript中createElement事件

    浅谈javascript中createElement事件

    本文通过示例向大家简单介绍了javascript中的createElement事件,需要的朋友可以参考下
    2014-12-12

最新评论