一种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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
网页禁用右键实现代码(JavaScript代码)
Oct 29 Javascript
屏蔽Flash右键信息的js代码
Jan 17 Javascript
jQuery统计指定子元素数量的方法
Mar 17 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
Feb 16 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
极简主义法编写JavaScript类
Nov 02 Javascript
快速解决vue-cli不能初始化webpack模板的问题
Mar 20 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
Sep 27 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
微信公众号平台接口开发 获取微信服务器IP地址方法解析
Aug 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 Smarty初体验二 获取配置信息
2011/08/08 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
Django查询数据库的性能优化示例代码
2017/09/24 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python3实现购物车功能
2018/04/18 Python
python实现周期方波信号频谱图
2018/07/21 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
python遍历路径破解表单的示例
2020/11/21 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
中学生团员自我评价分享
2013/12/07 职场文书
高一自我鉴定
2013/12/17 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
十八大闭幕感言
2014/01/22 职场文书
合理化建议书范文
2015/09/14 职场文书
2016入党心得体会范文
2016/01/06 职场文书