zoukankan      html  css  js  c++  java
  • 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));
  • 相关阅读:
    js选中文本的功能
    css中2端对其布局
    融合渐变轮播图和左右点击轮播图的js
    Hibernate入门一
    SpringDay01
    使用DoTwenn动画的不正常播放
    转载 利用WWW类获取图片并且在unityUGUI的Image中显示
    转载 Unity进阶技巧
    Unity中导入iTween插件问题
    转载 [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
  • 原文地址:https://www.cnblogs.com/jine/p/4079654.html
Copyright © 2011-2022 走看看