top$$constructor


Function: constructor de la clase.


var ClassA = Class.create("ClassA",function(){
	var value = "";
	this.getValue = function(){
		return value;
	};
	this.$$constructor = function(v){
		value = v ||value;
	};
	
});

var instA = new ClassA("value:A");

alert(instA.getValue());// value:A
	
top$$class


Class: almacena una referencia de la clase.

function ClassA(){
	this.$$constructor = function(){
	};
};
var ClassA = Class.create("ClassA",ClassA);
var instA = new ClassA();
alert(instA.$$class == ClassA); // true
top$$superClass


Class: almacena una referencia de la superClase.


function ClassA(){
	this.$$constructor = function(){
	};
};
var ClassA = Class.create("ClassA",ClassA);

var ClassB = Class.extend("ClassB",ClassA,function(){
		this.comparate = function(Klass){
			return Klass == this.$$superClass;
		};
		this.$$constructor = function(){
		};
});

var instB = new ClassB();
alert(instB.comparate(ClassA));// true
	
top$$className


String: nombre de la clase.


var ClassA = Class.create("ClassA",function(){

	this.getClassName = function(){
		return this.$$className;
	};
	this.$$constructor = function(){
	};
	
});

var instA = new ClassA();
alert(instA.getClassName());// ClassA
	
top$$super


Array: nos permite el acceso a todos los métodos y atributos públicos de las superclases, incluso obtener una referencia de cada una de las superclases.


var ClassA = Class.create("ClassA",function(){

	var value = "value:A";
	this.getValue = function(){
		return value;
	};
	this.$$constructor = function(){
	};
	
});

var ClassB = Class.extend("ClassB",ClassA,function(){

	var value = "value:B";
	this.getValue = function(){
		return value + " " + this.$$super[0].getValue();
	};
	this.$$constructor = function(){
	};
	
});

var instB = new ClassB();
alert(instB.getValue());// value:B value:A
	
top$$DEFINE_STATIC


Function: define los atributos y métodos estáticos.


function ClassA(){
	var value  = "default";
	this.getValue = function(){
		return value;
	};

	this.$$DEFINE_STATIC = function(){
		this.$$static.instances = [];
	};
	this.$$constructor = function(){
		 this.$$static.instances.push(this);
	};

};

var ClassA = Class.create("ClassA",ClassA);

var inst1 = new ClassA();
var inst2 = new ClassA();

alert(inst1.$$static.instances.length  + "  " + inst2.$$static.instances.length)// 2 2
alert(ClassA.$$static.instances.length); // 2	  
	
top$$static


Object: contiene los atributos y métodos estáticos.


function ClassA(){
	var value  = "default";
	this.getValue = function(){
		return value;
	};

	this.$$DEFINE_STATIC = function(){
		this.$$static.instances = [];
	};
	this.$$constructor = function(){
		 this.$$static.instances.push(this);
	};

};

var ClassA = Class.create("ClassA",ClassA);

var inst1 = new ClassA();
var inst2 = new ClassA();

alert(inst1.$$static.instances.length  + "  " + inst2.$$static.instances.length)// 2 2
alert(ClassA.$$static.instances.length); // 2		  
	
top$$implement


Function: añade atributos y métodos públicos de otras clases u objetos.


var ClassA = Class.create("ClassA",function(){
	this.A = "A";
});
var JSON = {
	$$className:"JSON",
	getValue:function(){
		return "value:JSON";
	}
};

var ClassM = Class.create("ClassA",function(){
	this.$$implement(ClassA,JSON);
	this.$$constructor = function(){
	
	};
});
 
var instM = new ClassM();
alert(instM.A + " " + instM.getValue())// A value:JSON
	
top$$implemented


Array: almacena los nombres de la clases y objetos implementados con $$implement, los objetos tienen que tener el atributo $$className para ser registrados.


var ClassA = Class.create("ClassA",function(){
	this.A = "A";
});
var JSON = {
	$$className:"JSON",
	getValue:function(){
		return "value:JSON";
	}
};

var ClassM = Class.create("ClassA",function(){
	this.$$implement(ClassA,JSON);
	this.$$constructor = function(){
	
	};
});
 
var instM = new ClassM();
alert(instM.$$implemented)// ClassA, JSON
	
topimplement


Function: añade atributos y métodos públicos de otras clases u objetos. Los atributos y métodos no pueden sobrescribir los métodos y atributos declarados dentro de la clase o los añadidos mediante $$implement


var ClassA = Class.create("ClassA",function(){
	this.A = "A";
});
var JSON = {
	$$className:"JSON",
	getValue:function(){
		return "value:JSON";
	}
};

var ClassM = Class.create("ClassA",function(){
	this.$$implement(ClassA,JSON);
	this.$$constructor = function(){
	
	};
});
 
var instM = new ClassM();
alert(instM.$$implemented)// ClassA, JSON
	
top$$finalize


Function: se ejecuta cuando eliminamos la instancia mediante el método finalize de Class.


function ClassA(){
	this.value = "";
	this.$$DEFINE_STATIC = function(){
		this.$$static.instances = [];
		this.$$static.removeInstance = function(inst){
			var instances = this.$$static.instances;
			for(var ctr = 0; ctr < instances.length; ctr++){
				if(instances[ctr] == inst){
					instances.splice(ctr,1);
					break
				}
			}
		};
	};
	this.$$constructor = function(v){
		this.$$static.instances.push(this);
		this.value = v;
	};
	this.$$finalize = function(){
		this.$$static.removeInstance(this);
	};
};


var ClassA = Class.create("ClassA",ClassA);
var inst1 = new ClassA("instance 1");
alert(ClassA.$$static.instances.length)// 1
inst1 = Class.finalize(inst1);
alert(ClassA.$$static.instances.length)// 0
	
top$$finalized


Boolean: devuelve true si la instancia a sido finalizada y false en caso contrario.


function ClassA(){
	this.value = "";
	this.$$DEFINE_STATIC = function(){
		this.$$static.instances = [];
		this.$$static.removeInstance = function(inst){
			var instances = this.$$static.instances;
			for(var ctr = 0; ctr < instances.length; ctr++){
				if(instances[ctr] == inst){
					instances.splice(ctr,1);
					break
				}
			}
		};
	};
	this.$$constructor = function(v){
		this.$$static.instances.push(this);
		this.value = v;
	};
	this.$$finalize = function(){
		this.$$static.removeInstance(this);
	};
};


var ClassA = Class.create("ClassA",ClassA);
var inst1 = new ClassA("instance 1");
var inst2 = new ClassA("instance 2");
Class.finalize(inst1);
alert("inst1: " + inst1.$$finalized);// inst1: true
alert("inst2: " + inst2.$$finalized);// inst2: false
alert(ClassA.$$static.instances.length)// 1