Hola,
hace tiempo habia encontrado el siguiente codigo:
Código Javascript
:
Ver originalvar Class = function(class1,class2){
var object = class2 ? class2 : class1;
var superclass = class2 ? class1.prototype : {};
for(var prop in superclass){
if(typeof object[prop] == 'undefined') object[prop] = superclass[prop];
else if(typeof superclass[prop] == 'function'){
object[prop] = (function(funct){
var bfunct = function(){
this.parent = bfunct.parent;
return funct.apply(this, arguments);
}
return bfunct;
})(object[prop]);
object[prop].parent = superclass[prop];
}
}
var _class = function(){
if(this.initialize) this.initialize.apply(this,arguments);
}
_class.prototype = object;
_class.constructor = Class;
return _class;
}
(tiene alguna modificaciones hechas por mi)
lo que hace esto es crear el constructor de las Clases que necesite, esta funcion me permite llamar a la funcion madre de determinada funcion mediante this.parent.call(this, argumentos)
lo que yo busco es simplificar esta linea a algo como esto:
this.Super(argumentos)
pero no he logrado lo que busco ya que no entiendo al 100% como funciona ese codigo.
EDITO:
Despues de analizar el codigo un poco mas, descubri como lograr lo que necesito:
Código Javascript
:
Ver originalvar Class = function(class1,class2){
var object = class2 ? class2 : class1;
var superclass = class2 ? class1.prototype : {};
for(var prop in superclass){
if(typeof object[prop] == 'undefined') object[prop] = superclass[prop];
else if(typeof superclass[prop] == 'function'){
object[prop] = (function(funct){
var bfunct = function(){
this.parent = bfunct.parent;
this.Super = function () {
this.parent.apply(object,arguments)
}
return funct.apply(this, arguments);
}
return bfunct;
})(object[prop]);
object[prop].parent = superclass[prop];
}
}
var _class = function(){
if(this.initialize) this.initialize.apply(this,arguments);
}
_class.prototype = object;
_class.constructor = Class;
return _class;
}
Aqui les dejo como funciona para quien le sea util, es bastante sencillo de usar:
Metodo 1:
class1 = objeto
Nos crea la funcion contructora para crear clases basadas en
class1 Metodo 2:
class1 = superclase
class2 = objeto;
Crea una super clase de
class1 añadiendo la modificaciones hechas
class2, y devuelve la funcion constructora final.
Ademas, nos permite usar el metodo
Super que nos permite llamar a la misma funcion ubicada en la super clase
ejemplo:
Código Javascript
:
Ver originalvar clase1 = new Class({
initialize:function () {
alert("clase 1")
}
})
var clase2 = new Class(clase1,{
initialize:function () {
this.Super()
alert("clase 2")
}
})
var test = new clase2()
// resulado: alert("clase 1"); alert("clase 2")