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:
Postagens (Atom)