`
wxb880114
  • 浏览: 683394 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

我所遇到的JavaScript——命名空间

阅读更多
   去年一年的时间都是在跟随项目,从后台到前端、从java到javascript、从一无所知到有些思路、从对无知产生恐惧到面对需求可以有那份淡定,但由于对自己的放松,没有及时的进行总结,写自己的博客记录自己一路的收获与失误。希望今年坚持写下去,为自己加油!
   人可以胸怀理想,但必须脚踏现实。---go。
   项目中多数工作都是重复的复制粘贴修改,但在这个重复枯燥的过程中,引发了自己对自己的思考,真的需要这么做吗?真的只能这么做吗?是不是有更好的方法?是不是可以把重复的提炼出来进行封装?但整个项目都是同一风格,一修改等于重新来过,甲方等不了,项目经理也等不了,得到了我也等不了的错误结论,一次次的没那个勇气去修改,进入一次次的纠结之中。
   造成现有的原因我个人觉得以下几点:
   1)核心代码非经验丰富者写;
   2)自身惰性,一叶障目不想见泰山;
   3)实际项目进度严格控制。
 
   发了些牢骚,但也是今年自身需要去克服的困难,
   1)没有经验丰富者可以去看开源项目、看淘宝看京东怎么写的;
   2)惰性需要渴望来治,渴望有所成就,渴望有所收获,渴望学以致用,实现自我价值;
   3)项目开发过程中尽量不改动也完成的功能模块,逐步引入新的思想,新的代码风格,迭代开发,保持项目进度。

   进入正题js的命名空间:
  1.命名空间的由来
     在js中没有类、对象这些概念,变量和函数,类的相关机制都是通过原型来实现的;于是在简单项目中直接定义function,当然自身单词量够用。但对于大型项目,多小组协同开发,代码量大,就导致变量名、函数名等各种冲突,错误不易发现及修改和代码难于管理维护。
     命名空间 namespace 是解决上述问题的一种有效方式;大型网站如Yahoo都有自己的命名空间。
2.命名空间的作用
     1)避免不同js文件中命名冲突;
     2)协同开发易于管理;
     3)统一代码风格,便于学习、上手、维护。  
3.js中的命名空间
  
        // 声明一个全局对象Namespace,用来注册命名空间
 Namespace = new Object();
 
// 全局对象仅仅存在register函数,参数为名称空间全路径,如"Grandsoft.GEA"
 Namespace.register = function(fullNS)
 {
     // 将命名空间切成N部分, 比如Grandsoft、GEA等
     var nsArray = fullNS.split('.');
     var sEval = "";
     var sNS = "";
     for (var i = 0; i < nsArray.length; i++)
     {
         if (i != 0) sNS += ".";
          sNS += nsArray[i];
         // 依次创建构造命名空间对象(假如不存在的话)的语句
         // 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去
          sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
      }
     //通过eval函数转换成可执行的代码,并创建对象
     if (sEval != "") eval(sEval);
 }   

4.项目中如何使用
  yui的命名方式
 
var YAHOO = window.YAHOO || {};
 

YAHOO.namespace = function(ns) {
 
    if (!ns || !ns.length) {
         return null;
      }
 
    var levels = ns.split(".");
     var nsobj = YAHOO;
 
    // YAHOO is implied, so it is ignored if it is included
     for (var i=(levels[0] == "YAHOO") ? 1 : 0; i<levels.length; ++i) {
          nsobj[levels[i]] = nsobj[levels[i]] || {};
          nsobj = nsobj[levels[i]];
      }
 
    return nsobj;
 };


资料:http://www.cnblogs.com/Ihaveadream/archive/2008/06/04/1213611.html
https://developer.mozilla.org/zh-CN/docs/XUL_School-840092-dup/JavaScript_Object_Management
分享到:
评论

相关推荐

    Extjs4 API文档阅读(一)——类系统(Class System)

    - 类名应包含在一个使用点号分隔的命名空间中,至少包含一个顶级命名空间。 - 命名空间和实际类名应使用驼峰式命名法,其他部分使用小写字母。 **示例:** - 推荐: - `MyCompany.form.action.AutoLoad` 而不是...

    ## JavaScript语言: 介绍、使用技巧和经典案例

    - **命名空间**:通过合理的命名空间划分,避免全局变量污染。 ##### 4. 框架与库的使用 随着JavaScript的流行,大量的框架和库应运而生,它们为开发者提供了丰富的功能和支持,极大地提升了开发效率。常用的前端...

    ASP.NET毕业设计——ASP.NET多功能聊天软件的设计与开发——文字聊天文件传输模块(源代码+论文).zip

    在ASP.NET中,可以使用System.Net.WebSockets命名空间来处理WebSocket连接。 3. **源代码**:提供的源代码将揭示如何在C#或VB.NET中编写ASP.NET后台逻辑,以及如何使用ASP.NET MVC或Web Forms架构来构建前端界面。...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     1.2.4 为重用命名空间而进行规划   1.2.5 通过可重用的对象把事情简化   1.2.6 一定要自己动手写代码   1.3 JavaScript语法中常见的陷阱   1.3.1 区分大小写   1.3.2 单引号与双引号   1.3.3 ...

    ASP.NET源码——文件编码转换器源码.zip

    2. **StreamReader和StreamWriter**:ASP.NET提供了System.IO命名空间下的StreamReader和StreamWriter类,它们可以读写文本文件,并允许指定编码。通过设置适当的Encoding参数,可以读取或写入特定编码的文件。 3. ...

    ASP.NET源码——[上传下载]多文件上传源码.zip

    5. **错误处理**:在上传过程中可能会遇到各种问题,如文件过大、网络中断或服务器空间不足等。因此,良好的错误处理机制是必要的,包括在客户端和服务器端进行异常捕获和处理。 6. **用户体验**:为了提供更好的...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     1.2.4 为重用命名空间而进行规划   1.2.5 通过可重用的对象把事情简化   1.2.6 一定要自己动手写代码   1.3 JavaScript语法中常见的陷阱   1.3.1 区分大小写   1.3.2 单引号与双引号   1.3.3 ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     1.2.4 为重用命名空间而进行规划   1.2.5 通过可重用的对象把事情简化   1.2.6 一定要自己动手写代码   1.3 JavaScript语法中常见的陷阱   1.3.1 区分大小写   1.3.2 单引号与双引号   1.3.3 ...

    Pro TypeScript with Steve Fenton 2018 2版

    - **命名空间与模块**:用于组织代码,避免全局命名冲突。 - **模块重导出**:可以方便地将一个模块的导出重新暴露给另一个模块。 - **默认导出与导出对象**:提供了不同的导出方式,便于模块间的交互。 - **模块...

    ASP.NET毕业设计——ASP.NETRSA可视化算法程序的实现与研究(源代码+论文).zip

    在ASP.NET环境中实现RSA算法,开发者通常会使用.NET Framework提供的System.Security.Cryptography命名空间,其中包含RSACryptoServiceProvider类。通过这个类,可以方便地进行公钥/私钥的生成、加密和解密操作。...

    MyWebStockService.zip

    在C#中,我们可以通过System.ServiceProcess命名空间来创建和管理Windows服务。创建服务涉及定义服务类,继承自ServiceBase,并实现OnStart和OnStop方法,用于启动和停止服务时执行的操作。 其次,该项目实现了Web...

    JavaScript函数学习总结以及相关的编程习惯指南

    在函数的学习中,我们经常会遇到比较操作,`==`和`===`是JavaScript中用于比较值的两个操作符。`==`是抽象等于操作符,它在比较之前执行类型转换;而`===`是严格等于操作符,它不会执行类型转换,因此是类型安全的。...

    这是一本有关最新的技术XML编程的书,书中详细的说明了XML的编程方式

    2. **命名空间(Namespaces)**:在大型项目中,可能会遇到相同名称的元素。为避免冲突,XML引入了命名空间,允许我们为元素和属性分配独特的标识符。例如,`xmlns="http://www.example.com"`定义了一个命名空间。 ...

    Mootools 源码分析文档与完整文档打包下载.zip

    同时,文档可能还会讲解Mootools的命名空间管理、对象继承机制、插件扩展等高级主题,帮助开发者深入理解其设计模式。 Mootools的完整文档部分,通常会分为几个主要部分:入门指南、API参考、示例代码和常见问题...

    exijs学习文档

    3. 进阶特性:探讨ExiJS的高级功能,如XML Schema支持、XPath查询、XML命名空间管理等。 4. 性能优化:提供关于如何最大化ExiJS效率的建议,如内存管理、流式处理和事件驱动编程。 5. 源码分析:深入源码,解释关键...

    计算机网络实验SOCKET编程----WEB服务器[C#版本].

    C#语言中的SOCKET编程主要涉及到System.Net命名空间下的Socket类。这个类提供了创建、连接、监听和发送/接收数据的方法。例如,`Socket.Bind()`方法用于将SOCKET绑定到特定的IP地址和端口号,`Socket.Listen()`用于...

    亮剑.NET深入体验与实战精要2

    1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...

    亮剑.NET深入体验与实战精要3

    1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...

    编写可读代码的艺术.[美]Dustin Boswell,Trevor Foucher(带详细书签)

    我们曾经在非常成功的软件公司中和出色的工程师一起工作,然而我们所遇到的代码仍有很大的改进空间。实际上,我们曾见到一些很难看的代码,你可能也见过。但是当我们看到写得很漂亮的代码时,会很受启发。好代码会很...

Global site tag (gtag.js) - Google Analytics