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>
  • 相关阅读:
    页脚保持在未满屏页面的底部
    jquery tab选项卡
    Unity 物体在屏幕内跟随鼠标移动
    Unity 中一些图形学知识
    Unity 简单的第三人称视角
    Unity 一个简单的鼠标跟随
    Unity常用操作代码
    3D渲染管线
    教你如何利用threejs对3D模型皮肤进行DIY
    从Maya中把模型搬运至网页的过程
  • 原文地址:https://www.cnblogs.com/skylaugh/p/566182.html
Copyright © 2011-2022 走看看