一种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 相关文章推荐
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
JavaScript实现快速排序(自已编写)
Dec 19 Javascript
Javascript学习指南
Dec 01 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
Bootstrap每天必学之按钮
Nov 26 Javascript
微信js-sdk地理位置接口用法示例
Oct 12 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
vue+Element中table表格实现可编辑(select下拉框)
May 21 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 Javascript
表单内同名元素的控制
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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
使用python实现学生信息管理系统
2021/02/25 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
历史系自荐信范文
2013/12/24 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
自荐信如何制作?
2014/02/21 职场文书
工作决心书范文
2014/03/11 职场文书
老师对学生的寄语
2014/04/09 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
优秀大学生申请书
2019/06/24 职场文书