`
classicbride
  • 浏览: 14943 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

现代Javascript之命名空间

阅读更多
转载自重庆PHP:http://www.php-chongqing.com/index.php/article/31
写过Java的同学,对命名空间一定不会陌生,通过命名空间可以很好的解决类名、函数名、变量名冲突。
Javascript本身并不支持命名空间,不过我们可以模拟实现。Javascript里实现命名空间的方式有好几种,这里写下我最喜欢、最常用的方式。顺利说一下,我们的社区也是采用这种方式,截点社区的js代码:
/**
 * php-chongqing.com global javascript
 * 
 * Depend jquery.1.4.2, jquery-ui-1.8.15.custom.js, jquery.metadata.js, jquery.validate.js, prettify.js
 * @author bing.peng
 */
var cq = {
    version: '0.1',
    /** 导航选中效果 */
    nav: function() {
        var url = location.toString();
	$("#nav a[href='"+ url +"']").addClass("selected");
	$("#meun-box a[href='"+ url +"']").addClass("selected");
    }
};

/**  
 * 用户对象
 * 检测用户登陆状态、弹出登陆框及完成登陆
 */
cq.User = function(){};
cq.User.prototype = {
    initLogin: function() {
        // do something...
    },
    isLogin: function() {
        // do some thing...
    }
}

/**
 * 附件对象,文章/问题附件
 * 完成我的社区页面中附件的上传、更新、删除等
 */
cq.Annex = function(){ // do something }
cq.Annex.prototype = {
    uploaded: function() {
        // do something
    }
}

首先,我们用简单对象方式创建对象cq,在cq对象里定义了版本属性和nav导航选中方法,因为导航方法很常用,基本每个网页都会用,所以我直接定义到了cq对象里,假如要调用nav方法,就直接写:
cq.nav();


接着我们在cq对象下,利用原型定义的方式定义了User对象,注意我们是在cq对象下定义的User对象,也就是说我们把cq模拟成了我们的命名空间,调用User对象代码:
var user = new cq.User();
user.initLogin();

var annex = new cq.Annex();
annex.uploaded();

是不是很像Java的命名空间?利用这种简单/原型混合的方式,我们轻松的模拟出了类java的命名空间。在用Javascript构建大型应用时,命名空间是必不可少的,因为变量名、函数名、类名太难取了,^_^,这种写法还有助于提高代码的可读性... 有时间我们再讨论其它方式的命名空间。
分享到:
评论

相关推荐

    javascript简单实现命名空间效果.docx

    JavaScript 命名空间是一种组织代码的策略,用于避免全局变量污染和冲突,尤其是在大型项目中,多个组件或模块共存时。JavaScript 本身并不直接支持命名空间的概念,但可以通过对象和闭包来模拟实现。以下是一些实现...

    TypeScript命名空间 命名空间块化.zip

    模块更符合现代JavaScript的模块化标准,而命名空间在处理大型的、需要强类型控制的遗留代码时更有优势。开发者可以根据项目需求选择合适的组织方式。 5. **命名空间的块化** "命名空间块化"可能指的是将大型命名...

    javascript自执行函数之伪命名空间封装法.docx

    ### JavaScript自执行函数之伪命名空间封装法 #### 一、引言 在现代Web开发中,JavaScript作为一种广泛使用的客户端脚本语言,其作用日益显著。为了提高代码的可维护性和安全性,开发者们不断探索新的编码技巧。...

    JavaScript创建命名空间(namespace)的最简实现

    在JavaScript中创建命名空间是为了避免全局变量污染以及更好地组织代码...在现代JavaScript开发中,许多库和框架提供更安全和规范的方式来实现类似的功能,例如使用立即执行函数表达式(IIFE)、模块化编程等高级特性。

    javascript模拟命名空间

    值得注意的是,随着ECMAScript标准的发展,现代JavaScript已经支持了模块化编程,可以使用import和export关键字来组织代码。这为JavaScript提供了真正的模块化支持,而不仅仅是命名空间模拟。 在学习和开发...

    js命名空间和闭包

    JavaScript是Web开发中不可或缺的一部分,尤其在前端领域更是...在实际开发中,结合现代的模块化方案,如ES6模块,可以进一步优化命名空间的使用,而闭包则经常被用于实现私有变量和函数,增强代码的灵活性和安全性。

    JavaScript 面向对象之命名空间

    所以,在现代JavaScript开发实践中,通常会推荐使用更为安全的模块化技术,如ES6中的模块(module)导入导出(import/export)功能,来管理命名空间和代码的模块化。 总结来说,JavaScript中的命名空间可以有效地...

    namespace.js Javascript的命名空间库

    JavaScript是一种广泛使用的编程...尽管现代的JavaScript版本(ES6及以后)已经原生支持模块化和导入导出语句,但在更早期的JavaScript版本中,命名空间库如`namespace.js`在当时的JavaScript项目中扮演了重要的角色。

    JS命名空间的一种改进版本

    传统的JavaScript命名空间通常是通过创建一个全局对象,然后将所有相关的函数和变量作为该对象的属性来实现的。例如: ```javascript var MyNamespace = { func1: function() {}, func2: function() {}, var1: '...

    Javascript 命名空间模式

    JavaScript 命名空间模式是一种组织代码的方式,它在JavaScript这样的动态语言中模拟了类似类静态语言中的命名空间概念,以此来避免全局变量污染和命名冲突的问题。在JavaScript中,由于其全局作用域的特性,如果多...

    javascript课件

    ### JavaScript的命名空间 **命名空间**的概念用于避免全局作用域中的变量冲突。在JavaScript中,可以通过对象字面量的方式定义命名空间,如下所示: ```javascript var namespace = namespace || {}; // 定义或...

    .NET的JavaScript运行库,微软的ClearScript

    1. **多引擎支持**:除了JScript,ClearScript还支持Google的V8引擎,提供了更快的执行速度和更现代的JavaScript语法支持。 2. **简单易用的API**:ClearScript为.NET开发者提供了直观的C#和VB.NET接口,可以轻松地...

    Javascript 类、命名空间、代码组织代码

    总之,这段代码展示了如何在 JavaScript 中实现类的模拟、命名空间的创建以及如何组织代码以提高可读性和可维护性。虽然不是现代前端开发的最佳实践,但对于理解 JavaScript 的基本概念和代码组织策略仍然很有帮助。

    JavaScript 规范

    #### 全局命名空间污染与 IIFE 在现代Web开发中,维护代码的清晰度和可维护性至关重要。全局命名空间污染是指在全局作用域(通常指的是`window`对象)中定义过多的变量、函数或其他类型的对象。这种做法会导致代码...

    《JavaScript权威指南(第5版)》--高清带目录

    第5版作为该书的一个版本,主要聚焦于JavaScript语言本身,并在原有基础上加入了最新的ECMAScript标准内容,以适应现代JavaScript开发的需要。这本书不仅适用于初学者,也包含了对中高级开发者非常有帮助的深入内容...

    javascript 经典封装

    7. **命名空间封装**:虽然JavaScript没有真正的命名空间,但可以模拟实现,比如使用对象来模拟命名空间,减少全局作用域中的变量数量,避免命名冲突。 8. **模块系统(CommonJS, ES6模块)**:在Node.js环境中,...

Global site tag (gtag.js) - Google Analytics