zoukankan      html  css  js  c++  java
  • 浅谈javascript单体【读javascript设计模式第五章节单体有感】

    单体,整个运行环境就独有一份,最简单的一种单体就是一个把所有属性和方法都集中在一起的对象,区别于一般的字面量对象,一般字面量对象是对一个物体的描述,集合该物体所具有的一些属性和方法,而单体则包含更多的些逻辑在里面,单体的好处有,划分命名空间,如果用来作为网页包装器,可以使得页面所有变量都封装在一个对象里,大幅度减小网页里的全局变量,

    代码如:

    common.js

    (function(wz){

      $.extend({

        init:function(){

          var self = this;

          this.bind();

          if($.isFunction(self.inside)){

            self.inside();

          }

        }  

      })

    })(wz || {});

    aboutUs.js

    wz.aboutUs = {

      init:function(){

      },

      bind:function(){    

      };

    }

    wz.inside = function(){

      wz.aboutUs.init();

    }

    上面的方式弊端就是任何属性和方法都可以通过“.”去获取和修改,单体也可以通过闭包去进行封装,只对外显示出具体的api接口,如:

    var test = (function(){

      var method1 = function(){};

      var method2 = function(){};

      return {

        method:function(){

          method1.......

          method2.......

        }

      }

    })()

    另外书上也有讲到惰性实例化,即推迟单体生成,如

    var test = (function(){

      var instance;

      var construt = function(){

        var method1 = function(){};

        var method2 = function(){};

        return {

          method:function(){

            method1.......

            method2.......

          }

        }

      }

      return {

        getInstance:function(){

          if(!instance){

            instance = construt();

          }

          return instance;

        }

      }

    });

    结合上面单体的一些功能,可以将其用在分支上,如:用分支技术创建XHR对象,代码就不敲了,

    总结:

    单例用处很广,可以优化命名空间,增强模块性 ,节约内存,通过使用分支,可以避免每次构造时候重复执行相同的判断,弊端会导致模块间的强耦合,

  • 相关阅读:
    方法的重载;数组 (Java Day05)
    switch语句;for/while循环;死循环;跳转语句;嵌套循环;方法及方法的调用(Java Day04)
    运算符;键盘录入;分支结构(Java Day03)
    基础概念学习;常量;变量;编码表;数据类型转换(Java Day02)
    Java语言基本概述;入门案例学习;环境变量的配置;Eclipse安装(Java Day01)
    JVM内存模型
    java多线程对CountDownLatch的使用
    System.nanoTime()的使用
    this用法
    idea取消重复代码提醒的功能
  • 原文地址:https://www.cnblogs.com/samKR/p/3790564.html
Copyright © 2011-2022 走看看