关于作者

Group

上一篇 / 下一篇  2007-03-28 18:00:16 / 个人分类:private

<scrīpt language="javascrīpt">
function FunctionArray()
{
    var functions=new Array();
    var FA=function (){
        for(var i=0;i<functions.length;i++){
            if(functions[i] instanceof Function)functions[i]();
        }
    }
    FA.AddFunction=function(newFunction){
        if(newFunction instanceof Function)
        {
            for(var i=0;i<functions.length;i++){
                if(functions[i]==newFunction)return;
            }
            functions.push(newFunction);
        }
    }
    FA.RemoveFunction=function(theFunction){
        for(var i=0;i<functions.length;i++){
            if(functions[i]==theFunction)functions.splice(i,1);
        }
    }
    return FA;
}
function Template_Group(Class)
{
    if(!Class)Class=Object;
    var prototype=new Class();
    return function()
    {
        var g=new Array();
        this.add=function(newElement)
        {
            if(newElement.constructor==Class)
            {
                for(var i=0;i<g.length;i++)
                {
                    if(g[i]==newElement)return;
                }
                g.push(newElement);
            }
        }
        this.remove=function(theElement)
        {
            for(var i=0;i<g.length;i++)
            {
                for(var i=0;i<g.length;i++)
                {
                    if(g[i]==newElement)g.slice(i,1);
                }
            }
        }
        for(var p in prototype)
        {
            if(prototype[p].apply)
            {
                this[p]=function()
                {
                    var m=p;
                    return function()
                    {
                        if(g.length)
                        {
                            o=g[0][m].apply(g[0],arguments);
                            if(!(o instanceof Object))
                            {
                                for(var i=1;i<g.length;i++)
                                {
                                    g[i][m].apply(g[i],arguments);
                                }
                                return;
                            }
                            var r=new (new Template_Group(g[0][m].apply(g[0][m],arguments).constructor));
                            r.add(o);
                            for(var i=1;i<g.length;i++)
                            {
                                r.add(g[i][m].apply(g[i],arguments));
                            }
                            return r;
                        }
                    }
                }()
            }
        }
    }
}
function ClassA()
{
    this.constructor=ClassA;
    this.v="!!";
    this.run=function(){
        alert(this.v);
    }
    this.clone=function(){
        var r=new ClassA();
        r.v=this.v;
        return r;
    }
}
var a=new ClassA();
var b=new ClassA();
var ClassAGroup=new Template_Group(ClassA);
var ag=new ClassAGroup();
a.v="a";
b.v="b";
ag.add(a);
ag.add(b);
var ag2=ag.clone().clone().clone();
ag2.run();

</scrīpt>


TAG: private

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)