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
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
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
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
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
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
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
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
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
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
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
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