• Javascript Module pattern template. Shows a class with a constructor and public/private methods/properties. Also shows compatibility with CommonJS(eg Node.JS) and AMD (eg requireJS) as well as in a br


    /**
     * Created with JetBrains PhpStorm.
     * User: scotty
     * Date: 28/08/2013
     * Time: 19:39
     */
    ;(function(global){
      "use strict";
    
      var M = function() {
    
        // Constructor. arguments are passed
        // from Module() call. this refers to m.
        function init() {
          meth_priv2();
          m.meth_pub2();
        }
    
        // Empty object, to be populated with
        // public properties and methods.
        var m = {};
    
        // Private properties. define using var x.
        // closure keeps them private.
        var prop_priv = "private property";
    
        // public properties. define using m.x.
        m.prop_pub = "public property";
    
        // private methods. define as var x = function() {}
        // closure keeps them private.
        var meth_priv = function() {
          console.log(prop_priv);
          console.log(m.prop_pub);
        };
    
        var meth_priv2 = function() {
    
          // access another priv method
          meth_priv();
    
          // access a pub method
          m.meth_pub();
        };
    
        // public methods. define as m.x = function() {}
        // private props/methods accessed via x.
        // public props/methods accessed via m.x
        m.meth_pub = function() {
          console.log(prop_priv);
          console.log(m.prop_pub);
        };
    
        m.meth_pub2 = function() {
    
          // access a priv method
          meth_priv();
    
          // access another pub method
          m.meth_pub();
        };
    
        // call the constructor
        init.apply(m, arguments);
        return m;
      };
    
      // determine correct export method depending upon
      // environment that this script was loaded in:
      if (typeof module != 'undefined' && module.exports) {
        module.exports = M; // Node / CommonJS...
      } else if (typeof define === 'function' && define.amd) {
        define('Module', [], M); // or RequireJS / AMD...
      } else {
        global.Module = M; // or browser
      }
    global.m=new M();
    })(this.window || global);
    

      使用:

        require(['m'],function(){
             m.meth_pub();
        });
    

      

     
    ;(function(global){
      "use strict";
     
      var M = function() {
     
        //构建函数
        function init() {
          meth_priv2();
          m.meth_pub2();
        }
         var m = {};
        //私有变量
        var prop_priv = "private property";
        //公有属性
        m.prop_pub = "public property";
     
        //私有函数
        var meth_priv = function() {
          console.log(prop_priv);
          console.log(m.prop_pub);
        };
     
        var meth_priv2 = function() {
          //访问另一私有方法
          meth_priv();
          //访问公有方法
          m.meth_pub();
        };
     
        //公有方法
        m.meth_pub = function() {
          console.log(prop_priv);//访问私有方法
          console.log(m.prop_pub);//访问公有方法
        };
     
        m.meth_pub2 = function() {
          //访问私有方法
          meth_priv();
          //访问公有方法
          m.meth_pub();
        };
     
        // 调用构建函数
        init.apply(m, arguments);
        return m;
      };
     
    
      if (typeof module != 'undefined' && module.exports) {
        module.exports = M; // Node / CommonJS...
      } else if (typeof define === 'function' && define.amd) {
        define('Module', [], M); // or RequireJS / AMD...
      } else {
        global.Module = M; // or browser
      }
      global.m=new M();
    
    })(this.window || global);
    

      

  • 相关阅读:
    禅道 之 项目开发必备
    Cmd 命令大全
    Php 性能参数优化 及 Iptables 防火墙限制用户访问平率
    Nginx 性能参数优化
    Mysql 性能调优参数
    Postfix的工作原理
    python三次输入错误验证登录
    python shopping incomplete code
    MySQL + Atlas --- 部署读写分离
    网站流量分析项目day03
  • 原文地址:https://www.cnblogs.com/meetrice/p/9348842.html
Copyright © 2020-2023  润新知