Por outro lado, fazer em coffee-script é bem melhor e mais enxuto. Vou postar o código coffee e depois o código gerado e javascript. Vejam só.
Aqui eu crio a classe Animal, que recebe no construtor o nome.
O método falar recebe um parâmetro "texto" e concatenará com o nome para gerar um ALERT
class Animal
constructor:(@nome)->
falar:(@texto)-> alert @nome + " FALOU "+ @texto
Aqui eu crio a classe Cachorro, que estende de Animal, recebe no construtor o nome, onde esse construtor irá chamar a super classe a passar o nome como parâmetro. Também o método falar, que por sua vez irá chamar o método falar da super classe para gerar o ALERT.
class Cachorro extends Animal
constructor:(@nome)->
super @nome
falar:(txt)->
super txt
Já aqui, eu inicializo a variável dog apontando para Cachorro e passo o nome como parãmetro.
depois eu chamo o método falar, passando também a fala do animal. Veja abaixo.
dog = new Cachorro("Dog Alemão");
dog.falar("AU AU ");
Pois bem, agora que expliquei e mostrei o código, preciso mostrar ele funcionando né? Vamos lá, segue imagem do alert abaixo.
Agora, analise você mesmo o código gerado pelo compilador do coffee-script para javascript.
var Animal, Cachorro, dog,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
Animal = (function() {
function Animal(nome) {
this.nome = nome;
}
Animal.prototype.falar = function(texto) {
this.texto = texto;
return alert(this.nome + " FALOU " + this.texto);
};
return Animal;
})();
Cachorro = (function(_super) {
__extends(Cachorro, _super);
function Cachorro(nome) {
this.nome = nome;
Cachorro.__super__.constructor.call(this, this.nome);
}
Cachorro.prototype.falar = function(txt) {
return Cachorro.__super__.falar.call(this, txt);
};
return Cachorro;
})(Animal);
dog = new Cachorro("Dog Alemão");
dog.falar("AU AU ");
É isso ai galera, espero que tenham gostado e até o próximo artigo. Abraço!
Nenhum comentário:
Postar um comentário