zoukankan      html  css  js  c++  java
  • 一种JavaScript的设计模式

    //简单的类的设计模式
    //定义一个类class1
    function class1() {
      
    //构造函数
    }


    //通过指定prototype对象来实现类的成员定义
    class1.prototype = {
      someProperty:
    "simple",
      someMethod:
    function {
        
    //方法代码
      }
    ,
      
    //其实属性和方法
    }
    在一个类的成员之间互相引用,必须通过this指针来进行。因为在JavaScript中第个属性和方法都是独立的,它们通过this指针联系在一个对象上。

    //简单的带参数的事件设计模式
    <script language="JavaScript" type="text/javascript">
    <!--
    //将有参数的函数封装为无参数的函数
    function createFunction(obj, strFunc) {
      
    var args = [];//定义args用于存储传递给事件处理程序的参数
      if(!obj) obj = window;//如果是全局函数则obj=window;
      //得到传递给事件处理程序的参数
      for(var i=2; i<arguments.length; i++{
        args.push(arguments[i]);
      }

      
    //用无参数函数封装事件处理程序的调用
      return function() {
        obj[strFunc].apply(obj, args);
    //将参数传递给指定的事件处理程序
      }

    }


    //定义类class1
    function class1() {
      
    //构造函数
    }

    class.prototype 
    = {
      show:
    function() {
        
    //show函数的实现
         this.onshow();//触发onshow事件
      }
    ,
      onShow:
    function() {}//定义事件接口
    }

    //创建class1的实例
    var obj = new class1();
    //创建obj的onshow事件处理程序
    function objOnshow(userName) {
       alert(
    "hello,"+userName);
    }

    //定义变量userName
    var userName = "terry";
    //绑定obj的onShow事件
    obj.onShow=createFunction(null"objOnshow", userName);
    //调用obj的show方法
    obj.show();
    //-->
    </script>

    通过createFunction封装,就可以用一种通用的方案实现参数传递。
    //一个简单的开发框架
    <script language="javascript">
        
    var http_request = false;
        
    function send_request(url) {//初始化、指定处理函数、发送请求的函数
            http_request = false;
            
    //开始初始化XMLHttpRequest对象
            if(window.XMLHttpRequest) //Mozilla 浏览器
                http_request = new XMLHttpRequest();
                
    if (http_request.overrideMimeType) {//设置MiME类别
                    http_request.overrideMimeType("text/xml");
                }

            }

            
    else if (window.ActiveXObject) // IE浏览器
                try {
                    http_request 
    = new ActiveXObject("Msxml2.XMLHTTP");
                }
     catch (e) {
                    
    try {
                        http_request 
    = new ActiveXObject("Microsoft.XMLHTTP");
                    }
     catch (e) {}
                }

            }

            
    if (!http_request) // 异常,创建对象实例失败
                window.alert("不能创建XMLHttpRequest对象实例.");
                
    return false;
            }

            http_request.onreadystatechange 
    = processRequest;
            
    // 确定发送请求的方式和URL以及是否同步执行下段代码
            http_request.open("GET", url, true);
            http_request.send(
    null);
        }

        
    // 处理返回信息的函数
        function processRequest() {
            
    if (http_request.readyState == 4// 判断对象状态
                if (http_request.status == 200// 信息已经成功返回,开始处理信息
                    alert(http_request.responseText);
                }
     else //页面不正常
                    alert("您所请求的页面有异常。");
                }

            }

        }

    </script>
  • 相关阅读:
    java获取web项目下文件夹的路径方法
    The method setCharacterEncoding(String) is undefined for the type HttpServletResponse
    java获取windows和linux下本机ip通用方法
    mysql慢查询日志查找与分析
    struts1 action之间的跳转
    jquery的tap会执行2次的替换办法
    Win7下如何安装切换jdk7和jdk8
    elasticdump
    python hive.py
    Hdfs数据备份
  • 原文地址:https://www.cnblogs.com/skylaugh/p/566182.html
Copyright © 2011-2022 走看看