var classe = (function() {
var classe = function(superclass, overrides) {
// trata a passagem de apenas um argumento.
if (!overrides) {
overrides = superclass;
superclass = Object;
}
// se o construtor nao foi injetado, cria um com chamada para a
// superclass.
var constructor = (
overrides.constructor != Object
? overrides.constructor
: function(){superclass.apply(this, arguments);}
);
// funcao que possibilita a herança.
var inheritance = function(over) {
if (typeof this == 'function') {
// herança direta.
return classe(this, over);
} else {
// override sobre as classes.
for ( var k in over) {
this[k] = over[k];
}
}
};
// muda a referencia do prototipo para fazer a herança.
inheritance.prototype = superclass.prototype;
// clona o prototipo da superclasse, sem a execucao do construtor da
// mesma.
constructor.prototype = new inheritance(overrides);
// aponta a referencia do construtor para a classe.
constructor.prototype.constructor = constructor;
// adiciona acesso a superclass!
constructor.superclass = superclass.prototype;
// adiciona o metodo auxiliar para herança direta.
constructor.extend = inheritance;
// retorna a classe!
return constructor;
};
return classe;
})();
new Roundhouse().kick()
quinta-feira, 3 de março de 2011
Classes + Herança = JavaScript OO
Assinar:
Comentários (Atom)