Skip to content

Instantly share code, notes, and snippets.

@pablomdo
Last active August 29, 2015 14:22
Show Gist options
  • Save pablomdo/ec6734421be37b005bf5 to your computer and use it in GitHub Desktop.
Save pablomdo/ec6734421be37b005bf5 to your computer and use it in GitHub Desktop.
Descrição básica de orientação a objetos em JavaScript com exemplos de classes, herança e polimorfismo
// Método construtor da classe Quimico
function Quimico(nome) {
this.nome = nome;
}
Quimico.prototype.falar = function () {
return 'Eu sou o ' + this.nome;
};
var quimico = new Quimico('Tobias');
quimico.falar(); // 'Eu sou o Tobias'
function Heisenberg(name) {
// Chama o construtor da classe pai
Quimico.call(this, name);
}
Heisenberg.prototype = new Quimico();
var walterWhite = new Heisenberg('Heisenberg');
walterWhite.falar(); // 'Eu sou o Heisenberg'
function Pinkman(name) {
// Chama o construtor da classe pai
Quimico.call(this, name);
}
Pinkman.prototype = new Quimico();
var jesse = new Pinkman('Jesse');
jesse.falar(); // 'Eu sou o Jesse'
// Sobreescreve o método falar da classe Heisenberg
Heisenberg.prototype.falar = function () {
return 'Say my name';
};
// Sobreescreve o método falar da classe Pinkman
Pinkman.prototype.falar = function () {
return 'Yo, bitch!';
};
var walterWhite = new Heisenberg('Heisenberg');
walterWhite.falar(); // 'Say my name'
var jesse = new Pinkman('Jesse');
jesse.falar(); // 'Yo, bitch!'
// A classe Quimico não foi alterada
var quimico = new Quimico('Tobias');
quimico.falar(); // 'Eu sou o Tobias'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment