一种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 相关文章推荐
js 单引号 传递方法
Jun 22 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 Javascript
javascript document.execCommand() 常用解析
Dec 14 Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
jQuery实现大图轮播
Feb 13 Javascript
Webpack打包字体font-awesome的方法示例
Apr 26 Javascript
vue实现选中效果
Oct 07 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 Javascript
javascript实现电商放大镜效果
Nov 23 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
URL Rewrite的设置方法
2007/01/02 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
小程序自定义日历效果
2018/12/29 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Python生成随机MAC地址
2015/03/10 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
使用Python对Excel进行读写操作
2017/03/30 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
java字符串格式化输出实例讲解
2021/01/06 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
大学新生军训个人的自我评价
2013/10/03 职场文书
总裁岗位职责
2013/12/04 职场文书
通信生自我鉴定
2014/01/18 职场文书
公司捐款倡议书
2014/05/14 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
先进工作者个人总结
2015/02/15 职场文书
自荐信格式模板
2015/03/27 职场文书
社区安全温馨提示语
2015/07/14 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Redis基本数据类型List常用操作命令
2022/06/01 Redis
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL