Javascript改观过程2

上次我们过程化地把功能实现了,然而也因此产生了问题,因为需求总是不断地改变的,过程式或函数式的编程虽然很直爽,可是后期带来的问题却可以让你的直爽的感觉瞬间消失!原来代码在javascript改观过程一
 好了,理清思路,需求还是那样,主要是为了重用,如果过程不够oo,不必奇怪,因为我oo能力还不行。呵呵!
首先我们定义一个类,叫popups,这个类的构造函数有两个参数,一个button对象和放置数据列表的容器!
function popups(buttonTarget,contrainer)
{
this._button=buttonTarget;
this._contrainer=contrainer;
}
然后是设置这两个参数的方法或者叫方法,和java的setProperty类似
popups.prototype={
SetButton:
function(btn){this._button=btn;},
SetContrainer:
function(con){this._contrainer=con;},
ShowData:
function(){
if(this.onShow)
{
for(var i=0;i<this.onShow.length;i++)
{this.onShow[i]();}
}

}
,
AttachEvent:
function(_eventhandle){
if(!this.onShow)
this.onShow=[];
this.onShow=push(_eventhandle);
}
}
这里看到有个ShowData方法,并不就是显示数据的方法,而是执行一个方法集合!我们回想原来的场景
1。点击按钮,按钮文字改为”隐藏“,
2。容器显示以及数据列表显示
。。。这里在点击按钮的时候是触发多事件的,所以就有了AttachEvent方法,这个方法接受一个方法函数为参数,并将其加入到方法数组中,然后我们再定义一个ShowData事件中触发onShow事件列表,这样就将这些额外的功能分解了,不会粘合在一块,以后要加另外的效果,比如说加个渐变效果,我们就可以写个方法,加到事件列表中,这和委托的效果类似!
接下来的工作就是把上次那些函数实现都放进类方法里面,封装在里面,以后要改,就只是改类,外层的调用类的代码不变!
研究jquery中,prototype有点大,不过很强,下次用他们来实现看看怎样简便!
痛苦的努力,并快乐着!
posted @ 2008-03-02 23:36  Awen  阅读(418)  评论(0编辑  收藏  举报