Conheço o Javascript há algum tempo, embora não seja um usuário pesado, conheço o primeiro desde o momento em que o Netscape era meu navegador. Eu entendo muito bem as principais coisas, mas como a abordagem do JavaScript para OOP é prototípica, tenho algum problema em entender isso.
Um problema a acrescentar a isso parece que as coisas podem ser feitas de mais de uma maneira, e é aqui que os livros não ajudam muito porque põem todos os exemplos em cima da mesa, dificultando o ritmo.
O que eu preciso para iniciar é apenas uma maneira de fazer isso, se alguém puder me ajudar com o código mais simples possível, um exemplo em que eu possa ver como o modelo OOP prototípico funciona?
Para ser útil, o código deve ter um objeto herdado, para acessar a propriedade de um pai e suas propriedades herdadas e a função de um pai, substituir a função de um pai e ter uma instância de herança múltipla em que um objeto herda dois outros objetos.
fonte
Respostas:
Veja também:
fonte
O especialista hilário @venkat_s compartilha uma analogia para compreender a herança prototípica.
Aqui está uma amostra de seu humor: "O problema do JavaScript é que ele não grita com você. É seu amigo. Ele não diz quando algo está errado, ele simplesmente para de funcionar. Pare de ligar para você"
Por herança, ele continuou: "O protótipo é como uma mochila - para o objeto. Para tudo o que é um objeto em JavaScript - ele tem uma mochila e você pode colocar coisas nele. E todos os seus objetos podem acessá-lo".
Espero que ajude.
fonte
Esqueça o código. A explicação mais simples.
Construtores de funções constroem objetos. Em JS, funções são objetos que podem ter propriedades. Toda função possui uma propriedade prototype que pode conter qualquer objeto. Você pode definir qualquer protótipo de construtor facilmente em tempo real. Se você quiser arruinar matrizes, por exemplo,
O objeto prototype é basicamente um fallback que é verificado por instâncias quando você tenta fazer referência a uma propriedade que não possui. Se o objeto protótipo não tiver esse método, o objeto protótipo do construtor será verificado quanto ao método. Essa é a cadeia que é seguida.
Portanto, não se trata realmente de herança. É sobre, "Oh, você não tem isso, bem, sua mãe tem na bolsa de protótipo dela? Não? E a avó dela? Não? Então, que tal ... até chegarmos a Eve, ou o protótipo do construtor Object que é onde o dinheiro sempre para.
Portanto, não é o caso de suas instâncias captarem ou reterem o conteúdo do protótipo. É que quando o JavaScript chama o método de um objeto, existe um processo de fallback para verificar a cadeia object-> constructor.prototype para ver se o método desconhecido pode ser encontrado. E é por isso que quando você altera um protótipo de construtor, todas as instâncias existentes "obtêm" esse método. Eles realmente não recebem nada. É o conjunto de objetos substitutos para pesquisa que obtém o novo método.
fonte