一种JavaScript的设计模式


Posted in Javascript onNovember 22, 2006

一种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>

Javascript 相关文章推荐
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 Javascript
jquery拖拽效果完整实例(附demo源码下载)
Jan 14 Javascript
基于jquery实现简单的分页控件
Mar 17 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
微信小程序 九宫格实例代码
Jan 21 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
详解小程序用户登录状态检查与更新实例
May 15 Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
表单内同名元素的控制
Nov 22 #Javascript
document.all与WEB标准
May 13 #Javascript
云网广告中的代码,提示出错,大家找找
Nov 21 #Javascript
在视频前插入广告
Nov 20 #Javascript
使两个iframe的高度与内容自适应,且相等
Nov 20 #Javascript
arguments对象
Nov 20 #Javascript
重定向实现代码
Nov 20 #Javascript
You might like
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
让您的菜单不离网站
2006/10/03 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
ES6中异步对象Promise用法详解
2019/07/31 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
如何对python的字典进行排序
2020/06/19 Python
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
总经理助理岗位职责
2013/11/08 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
领导干部失职检讨书
2015/05/05 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android