一种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 相关文章推荐
在网页中屏蔽快捷键
Sep 06 Javascript
javascript 树形导航菜单实例代码
Aug 13 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
js实现透明度渐变效果的方法
Apr 10 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
Sep 04 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
js简单粗暴的发布订阅示例代码
Jan 23 Javascript
vue项目多环境配置(.env)的实现
Jul 21 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
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
谈谈JS中的!!
2017/12/07 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
利用python将json数据转换为csv格式的方法
2018/03/22 Python
python实现多人聊天室
2020/03/31 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python实现人机五子棋
2020/03/25 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
外贸销售员求职的自我评价
2013/11/23 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
会计专业求职信范文
2014/03/16 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python