/*author:[EMAIL PROTECTED]/
function Class(Initalizer,SuperClasses)
{
        if(!SuperClasses)SuperClasses=[];
        var ret=function(){
                for(var i=0;i<SuperClasses.length;i++)
                {
                        SuperClasses[i].call(this);
                }

                var $private={};
                var $public=this;
                var $static=ret;

                with($static){
                        with($private){
                                with($public){
                                        
eval("("+Initalizer+").apply(this,arguments)");
                                }
                        }
                }
                return this;
        }

        ret.prototype=Initalizer.prototype;

        for(var p in
Initalizer.prototype)ret.prototype[p]=Initalizer.prototype[p];
        for(var p in Initalizer)ret[p]=Initalizer[p];
        for(var i=0;i<SuperClasses.length;i++)
        {
                for(var p in SuperClasses[i].prototype)
                {
                        ret.prototype[p]=SuperClasses[i].prototype[p]
                }
        }
        return ret;
}

/*
function alert(s)
{
        WScript.echo(s);
}
*/

/***********************************************
Example:public static private
************************************************/

var test1=new Class(function(){

        //v1 is public
        $public.v1=1;

        //v2 is private
        $private.v2=2;

        //define public variable with this
        this.vv1=2;

        //public function member
        $public.show=function(){
                //visit public and private variable
                alert(v1);
                alert(v2);
        }
        $public.set_static=function(v){
                $static.v3=v;
        }
});

var obj=new test1();

//visit public variable
alert(obj.v1);
alert(obj.vv1);

//try to visit private variable
alert(obj.v2);

//call public member function
obj.show();

//set static variable
obj.set_static(10);
//visit static variable from class
alert(test1.v3);

/***********************************************
Example:multi-inherit
************************************************/
var parent=function(){this.v4=6};
parent.prototype.v5=1000;

var test2=new Class(function(){
        $public.show2=function(){
                alert(this.v1);
                alert(v4);
                alert(v5);
        }
},[test1,parent]);

var obj=new test2();
obj.show2();
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to rubyonrails-spinoffs@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to