Cierto, no lo había pensado así. Ahora mi duda es como se implementa un nuevo namespace. Intentando imitar lo que hace JQuery me ha salido esto:
Código Javascript
:
Ver originalfunction X(f) {
if( f instanceof Function) {
return new X.Function(f);
}
}
X.Function = function(f) {
this.f = f;
}
X.Function.prototype.extend = function (base) {
this.f.prototype = Object.create(base.prototype);
this.f.prototype.constructor = this.f;
}
function B(){
console.log("B constructor");
}
B.prototype.fbb = function() {}
function C(){
console.log("C constructor");
}
X(C).extend(B);
C.prototype.fcc = function() {}
var c = new C(); // C constructor : OK
console.log(c instanceof B); // ok
console.log(c instanceof C); // ok
c.constructor(); // C constructor : ok
Primeramente he intentado que la clase X.Function, en vez de tener una propiedad f de la clase Function, fuera una clase extendida de Function. Pero de esta manera no he conseguido hacerlo:
Código Javascript
:
Ver originalfunction X(e){
if( e instanceof Function) {
return new X.Function(e);
}
}
X.Function = function() {
Function.apply(this, arguments);
}
X.Function.prototype = Object.create(Function.prototype);
X.Function.prototype.constructor = X.Function;
X.Function.prototype.extend = function (base) {
this.prototype = Object.create(base.prototype);
this.prototype.constructor = this;
}
Un saludo!