仰天一笑
昨日不悔,今日勿失,明日莫忧! —徐羽
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
274 随笔 :: 27 文章 :: 1001 评论 :: 43 引用
一种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
>
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2006-11-20 15:33
仰天一笑
阅读(1775)
评论(6)
编辑
收藏
评论
1221372
#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
求知无傲
不错喔。
回复
引用
查看
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
美国空军拟最多购买1.8万台iPad 2
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
·
HTC首款Android4.0手机大曝光
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
一、版权归原创作者所有;
二、坚持挖掘互联网宝藏;
三、重在技术交流,共享知识,愿交天下朋友;
四、技术文章包括asp.net、seo、ajax、css、javascript等。
Email:ansonxy@gmail.com
QQ:
943530498
MSN:
dingxi819@yahoo.com.cn
仰天一笑心灵成长博客
仰天一笑电子商务博客
仰天一笑新浪微博
昵称:
仰天一笑
园龄:
6年5个月
粉丝:
65
关注:
17
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
最新随笔
1. 解决方案:Could not write to output file 'c:\windows\Microsoft.NET\Framework\........dll' -- '拒绝访问。 '
2. 一般情况下asp可以正常运行,但只要连接数据库就提示,Microsoft JET Database Engine 错误
3. 关于Asp.net无法写入输出文件的原因
4. 【推荐】Lazy Load, 延迟加载图片的 jQuery 插件
5. 中秋祝福
6. 纳兰性德诗词全集
7. 传统企业品牌转型电商的几大思考
8. World Wide Web Publishing服务无法启动提示:错误127 找不到指定程序/路径
9. ASP.NET(C#)常用数据加密和解密方法汇总
10. 数据加密技术
我的标签
数据加密技术
(3)
数据加密
(3)
数据加密算法
(1)
身份认证
(1)
信息认证技术
(1)
数字签名
(1)
密钥管理技术
(1)
C#常用加密方法汇总
(1)
对称加密
(1)
非对称加密
(1)
更多
随笔分类
(310)
ASP.Net-C#(85)
(rss)
CSS(1)
(rss)
DataBase(33)
(rss)
Javascript/Ajax/XML(51)
(rss)
产品专卖(4)
(rss)
电子商务(8)
(rss)
古风古韵(13)
(rss)
谈天论地(33)
(rss)
网站建设(36)
(rss)
项目管理(1)
(rss)
疑难杂症(2)
(rss)
原创天地(43)
(rss)
文章分类
(27)
DotNet(12)
(rss)
DRM(5)
(rss)
Electronic Commerce(2)
(rss)
JavaScript(3)
(rss)
software engineering (5)
(rss)
相册
汇亚创意设计
上海汇亚科技公司
My Links
dudu
(rss)
jackei
(rss)
net366_汇亚科技
seo探索
公司BLOG
(rss)
海东
(rss)
黑梦SEO
汇亚创意设计
酷勤网
樂思蜀SEO博客
(rss)
李天平
(rss)
网络安全
兄弟blog
积分与排名
积分 - 631746
排名 - 78
最新评论
阅读排行榜
评论排行榜