热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

基于JavaScript下namespace功能的简单分析_基础知识

前些天在剥离百度随心听的播放器引擎时,看到了一个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 e = ("" + a[c]).split("."); //拆分命名空间,拆分后 ["bradio", "lang", "array"]
b = bradio; //基础对象,基于这个对象进行命名空间的添加
for (d = "bradio" == e[0] ? 1 : 0; d 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 arr = ("" + args[i]).split(".");
parent = bradio;
for(j = "bradio" == arr[0] ? 1 : 0; j parent[ arr[j] ] = parent[ arr[j] ] || {};
parent = parent[ arr[j] ];
}
}
return parent;
}


当然只是我的理解,如果哪里不是很对,还请各位大侠帮忙指出,以免误导了大家。
推荐阅读
  • 博主从零开始学习HTML(入门基础)
    从零开始学习HTML(入门基础)互联网三大基石HTTP协议URL:统一资源定位符HTML:超文本标记语言HTML的Head标签中的常用元素<!--告知 ... [详细]
  • 云计算是一种基于互联网的服务模式,用户可以在任何时间、任何地点访问这些服务。这里的‘云’是对互联网的隐喻表达,代表了一种虚拟化的计算资源池。云计算可以分为私有云、公有云、混合云等多种类型,每种类型都有其特定的应用场景和服务对象。 ... [详细]
  • 基于花生壳域名的Android与ESP8266远程控制系统搭建
    本文介绍了一种使用Android设备、ESP8266模块及路由器,结合花生壳动态域名解析服务实现远程控制的方法。通过该方法,用户能够有效解决因公网IP变动导致的连接问题,实现稳定可靠的远程控制。 ... [详细]
  • 新萝卜Ghost Xp Sp3 装机版
    新萝卜GhostXpSp3装机版XLB_201305ZJB.iso大小:901457920字节MD5:EBE33B7DB119CF2D0B1D79F8F0FC22BFSHA1:0 ... [详细]
  • 随着5G、云计算、人工智能、大数据等新技术的广泛应用,人们的生活生产方式发生了深刻变化。从人际互联到万物互联,数据存储与处理需求激增,推动了数据与算力设施的发展。 ... [详细]
  • 中国高铁首次海外项目启动,最高设计时速达350公里;支付宝推出新功能,支持向微信和QQ好友转账。 ... [详细]
  • 探索Python编程的价值与应用
    本文探讨了学习Python的重要性和广泛的应用场景,从个人技能提升到职业发展的多个方面进行了详细解析。 ... [详细]
  • MySQL 8.0 安装指南与配置详解
    通过参考多个在线教程,成功完成了MySQL 8.0的安装过程,并在此基础上撰写了一篇详细的安装与配置指南,旨在帮助更多初学者顺利完成MySQL的安装。 ... [详细]
  • 持续集成概述与实践指南
    本文探讨了持续集成(CI)的基本概念、目的及其在现代软件开发中的应用。通过实例分析,帮助读者理解如何有效实施持续集成,提高软件开发效率。 ... [详细]
  • 深入探讨jQuery中的事件处理、动画效果及表单操作
    本文详细介绍了jQuery这一流行的JavaScript库在事件处理、动画效果实现以及表单操作方面的应用。通过具体的示例和代码片段,帮助开发者更好地理解和运用jQuery的强大功能。 ... [详细]
  • 串行与并行加法器的逻辑设计与性能分析
    本文详细探讨了串行加法器和并行加法器的设计原理及其性能特点。通过对比分析两种加法器的工作机制,深入讨论了它们在不同应用场景下的优劣,特别是关于进位处理的不同策略。文章还介绍了进位链的概念及其对加法器性能的影响。 ... [详细]
  • 尽管Hao123.com界面简单,甚至被一些技术精英所轻视,但它却是全球访问量最大的中文网站之一。本文详细讲述了百度如何收购这一看似不起眼的网站,并探讨了其背后的商业逻辑。 ... [详细]
  • 本文总结了在使用HTML5 Canvas进行开发时常见的错误及其解决方案,帮助开发者避免常见的陷阱,提高开发效率。 ... [详细]
  • 本文详细探讨了数据仓库中常见的四种事实表类型:事务事实表、周期性快照事实表、累积快照事实表以及无事实的事实表,并提供了关于如何处理不同类型的度量指标的专业建议。 ... [详细]
  • 本文精选了六个功能强大且用户友好的在线资源网站,涵盖多种类型的资料和工具,帮助用户在日常工作中更加高效地获取信息。 ... [详细]
author-avatar
惠嘟du
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有