日期:2014-05-16  浏览次数:20367 次

Javascript中的singleton模式实际应用

前面一章讲解的是单例的两种构建方法。下面就说说单例在JS怎么个最流行、最实用。

划分命名空间

单体对象由两个部分组成:包含方法和属性成员的对象自身,以及用于访问它的变量。

它提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问(通过确保单体对象只存在一份实例,你就可以确信自己的所有代码使用的都是同样的全局资源)。

命名空间是可靠地JavaScript编程的一个重要工具。把相关的方法组织到一起,也助于增强代码的文档性。

JavaScript 的命名空间并不是真正的命名空间, 只是在脚本内部创建一个封闭的小空间, 必须通过特定的空间名称才能对空间内部的代码进行访问, 这样可以防止同名函数和变量发生冲突, 也可以更方便地管理代码, 就像 .NET 的命名空间 (namespace) 和 Java 的包 (package) 一样.

用作特定页面专用代码的包装器

在拥有许多网页的网站中,有些JavaScript代码是所有网页都要用到的,它们通常被存放在独立的文件中;而有些代码则是某个页面专用的,不会被用到其他地方。最好把这两种代码分别包装在自己的单体对象中。

具体做法:封装一些数据(也许是作为常量)、为各页面的行为定义一些方法以及初始化方法。涉及DOM中特有元素的大多数代码,比如添加事件监听的代码,只有在这些元素加载之后才能工作。你可以通过创建一个init方法并将其关联到窗口的load事件(或类似的其他事件,如DOMContentLoaded事件),将所有这些初始化代码组织到一个地方。

复制代码
/* Generic page Object */
var Namespace = {};
Namespace.PageName = {
    //页面常量constants
    CONSTANT_1: true,
    CONSTANT_2: 10,
    //Page methods
    method1: function() {
        //...
    },
    method2: function(arg) {