Last active
November 4, 2016 05:00
-
-
Save felipeblini/a0b363c88a5261520d56c5c12ff267da to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// criando a superclasse Natureza | |
function Natureza(nome, cor) { | |
this.nome = nome; | |
this.cor = cor; | |
}; | |
// Adicionando comportamntos em seu objeto prototype | |
Natureza.prototype.nascer = function () { | |
console.log(this.nome + ' ' + this.cor + ' nascendo...'); | |
} | |
Natureza.prototype.crescer = function () { | |
console.log(this.nome + ' ' + this.cor + ' crescendo...'); | |
} | |
Natureza.prototype.morrer = function () { | |
console.log(this.nome + ' ' + this.cor + ' morrendo...'); | |
} | |
// checando o protótipo de Natureza | |
console.log('Protótipo de Natureza', Natureza.prototype); | |
/* "Protótipo de Natureza" | |
[object Object] { -> Percebe-se que Natureza herda todos métodos de Object adicionando seus próprios metodos abaixo: | |
crescer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' crescendo...'); | |
}, | |
morrer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' morrendo...'); | |
}, | |
nascer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' nascendo...'); | |
} | |
}*/ | |
// criando a subclasse Fruta | |
function Fruta(nome, cor, temSemente) { | |
// chamando o construtor da superclasse e passando | |
// o objeto atual como contexto | |
Natureza.call(this, nome, cor); | |
this.temSemente = temSemente; | |
}; | |
// checando o protótipo de Fruta | |
console.log('Protótipo de Fruta', Fruta.prototype); | |
// como esperado o protótipo de Fruta é Object | |
// "Protótipo de Fruta" [object Object] { | |
// extendendo Fruta | |
Fruta.prototype = Natureza.prototype; | |
// adicionando um método específico para frutas | |
Fruta.prototype.temSemente = function() { | |
console.log(this.temSemente); | |
} | |
// checando novamente o protótipo de Fruta | |
console.log('Novo Protótipo de Fruta', Fruta.prototype); | |
/* Fruta agora tem todos os métodos de Object, de Natureza e o seu método específico temSemente() | |
"Novo Protótipo de Fruta" | |
[object Object] { | |
crescer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' crescendo...'); | |
}, | |
morrer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' morrendo...'); | |
}, | |
nascer: function () { | |
window.runnerWindow.proxyConsole.log(this.nome + ' ' + this.cor + ' nascendo...'); | |
}, | |
temSemente: function () { | |
window.runnerWindow.proxyConsole.log(this.temSemente); | |
} | |
} */ | |
var uva = new Fruta("uva", "roxa", true); | |
var morango = new Fruta("morango", "vermelho", false); | |
uva.nascer(); // "uva roxa nascendo..." | |
morango.nascer(); // "morango vermelho nascendo..." | |
uva.crescer(); // "uva roxa crescendo..." | |
morango.crescer(); // "morango vermelho crescendo..." | |
uva.morrer(); // "uva roxa morrendo..." | |
morango.morrer(); // "morango vermelho morrendo..." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment