仰天一笑

昨日不悔,今日勿失,明日莫忧! —徐羽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  230 随笔 :: 27 文章 :: 803 评论 :: 39 Trackbacks
//简单的类的设计模式
//定义一个类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>
posted on 2006-11-20 15:33 仰天一笑 阅读(1157) 评论(6)  编辑 收藏 所属分类: Javascript/Ajax/XML

评论

#1楼 [楼主] 2006-11-20 15:44 仰天一笑      
转自:http://www.cnblogs.com/terry52/archive/2006/09/26/514895.html?Pending=true#Post
  回复  引用  查看    

#2楼  2007-04-25 12:39 sun jian [未注册用户]
Good FameWork, Thanks for sharing
  回复  引用    

#3楼  2007-04-27 10:47 gygn [未注册用户]
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);//将参数传递给指定的事件处理程序
}
}
不明白这个函数的意思,
if(!obj) obj = window;//如果是全局函数则obj=window; 这句话是什么意思,请帮忙解释一下。“如果是全局函数则obj=window”。

为什么在传递参数传得的null。(createFunction(null, "objOnshow", userName);
)。

  回复  引用    

#4楼  2008-06-09 13:42 求知无傲      
不错喔。
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交