• javascript模块化开发初探


    //immediately-invoked fuction expression   iife
    ;(function(arg){
        return something;
    })(arg);
    //第二种写法 
    !function(arg){
    
    }(arg);
    
    //第三种写法
    (function(arg){
    
    }(arg));
     
    //eg 可访问ModuleProperty moduleMethod
        var Module = (function(){
            var my = {},
                privateVariable = 1;
            function privateMethod(){
    
            }
            my.ModuleProperty = 1;
            my.moduleMethod = function(){
    
            };
            return my;
        }());
    
    //eg2
        var Module = (function(){
            var my = {},
                privateVariable = 1;
            function privateMethod(){
    
            }
            my = {
                ModuleProperty : 1;
                moduleMethod : function(){
    
                }
            }
            return my;
        }());
    
        //使用对象直接量来表达
        var my = {
                ModuleProperty : 1;
                moduleMethod : function(){
    
                }
            };
        //返回一个函数 如jquery
        var Cat = (function(){
            //    私有成员
            return function(name){
                this.name = name;
                this.bark = function(){};
            }
        }());
        var tomcat = new Cat("tom");
        tomcat.bark();
    //
        var module =(function(){
            var x = 1;
            function f1(){}
            function f2(){}
            return {
                publicmethod : f1,
                publicmethod : f2
            }
    
        }());
    
        //扩展
        var Module = (function(my){
            my.anothermothod = function(){
    
            };
            return my;
        }(Module));
    
        //松耦合扩展  如果没有定义过Module 或者不在乎加载顺序的话
         var Module = (function(my){
             my.anothermothod = function(){
    
            };
            return my;
         }( Module || {} ));
    
         //紧耦合扩展   定义过,并且在以前的基础上扩展 覆盖已有方法
          var Module = (function(my){
              var oldmothod = my.modulemethod;
              my.modulemethod = function(){
                  //方法重载
              };
            return my;
         }( Module ));
    
         //克隆与继承     a
         var module_two = (function(old){
             //
             var my = {},
                 key;
             for( key in old ){
                 if(old.hasOwnPropery(key)){
                     my[key] = old[key]
                 }
             }
             
             var supermethod = old.modulemethod;
             my.modulemethod = function(){
                 //重写
                 //supermethod
             };
         }(Module));
         // b   Create(old);
         var module_two = (function(old){
             
             var my = Create(old);
    
             var supermethod = old.modulemethod;
             my.modulemethod = function(){
                 //重写
                 //supermethod
             };
         }(Module));
  • 相关阅读:
    【转】寻找最好的笔记软件:海选篇 (v1.0)
    【转】git rebase简介(基本篇)
    【转】学会这13个原则写UI界面文案,用户才能秒懂
    sqlserver巧用row_number和partition by分组取top数据
    使用SQL语句清空数据库所有表的数据
    在 SQL Server 2005 中配置数据库邮件
    SQL compute by 的使用
    SQL Cursor 基本用法
    Sqlserver双机热备文档(无域)
    查询分页的几种Sql写法
  • 原文地址:https://www.cnblogs.com/jine/p/4079654.html
Copyright © 2020-2023  润新知