一种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 相关文章推荐
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
vue-resouce设置请求头的三种方法
Sep 12 Javascript
Angular网络请求的封装方法
May 22 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
es6中比较有用的7个技巧小结
Jul 12 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
Mar 12 Javascript
JS手写一个自定义Promise操作示例
Mar 16 Javascript
django简单的前后端分离的数据传输实例 axios
May 18 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 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
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
php自定义时间转换函数示例
2016/12/07 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
django query模块
2019/04/20 Python
Django实现发送邮件功能
2019/07/18 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
浅析NumPy 切片和索引
2020/09/02 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
Melissa香港官网:MDreams
2016/07/01 全球购物
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
人大代表选举标语
2014/10/07 职场文书
2015年环保局工作总结
2015/05/22 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Python爬虫之爬取二手房信息
2021/04/27 Python
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android
Redis入门基础常用操作命令整理
2022/06/01 Redis