Estou lendo o Javascript: The Good Parts e lutei para entender minha seção de protótipos .
Depois de um pouco do google, cheguei à conclusão de que é adicionar propriedades aos objetos após a declaração dos objetos.
Usando esse script brilhava em w3schools, notei que remover a linha que adiciona a propriedade prototype não teve efeito . Então qual é o ponto?
//Prototyping
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
employee.prototype.salary=null; // <--- try removing this line
fred.salary=20000;
document.write (fred.salary);
javascript
prototyping
technique
Fuzz leve
fonte
fonte
Respostas:
Não é assim que o protótipo funciona. O protótipo é usado na cadeia de protótipos.
Sempre que você tenta obter uma propriedade em um objeto, ele verifica o objeto para esse nome de propriedade. Se não existir, procurará no protótipo.
Exemplo:
Portanto, o objetivo do protótipo é simplesmente reutilização e herança de código.
fonte
prototype is undefined
---o.prototype.newProp = "mutts nuts";
o
é um objeto. A.prototype
propriedade é usada em funções, ignore-a. Apenas façao.newProp = "mutts nuts"
Quando você
fred.salary=20000
adicionou o atributo de salário apenas a fred. Ao usar o protótipo, todos os funcionários que você criar a partir de então terão o atributo salário.Digamos que você tenha 100 instâncias de funcionários e queira adicionar um atributo de salário a todos eles. Você pode fazer isso manualmente, iterar sobre cada funcionário e adicioná-lo. Ou você pode usar prototype e definir se para todos eles.
O protótipo é útil quando você deseja funcionalidade para algo que já existe. Digamos que você queira adicionar um método personalizado às matrizes. Você faria algo como:
A partir daí, todas as matrizes que você criará terão esse método disponível.
fonte
Você pode dar uma olhada neste artigo .
Se você adicionar uma propriedade a um objeto usado como protótipo para um conjunto de objetos, os objetos para os quais é o protótipo também obterão a nova propriedade.
Essa é uma das principais vantagens de uma linguagem baseada em protótipo em relação à baseada em classe.
Além disso, é fácil obter uma herança OO clássica com JS, se necessário, mas geralmente é difícil obter um modelo de protótipo para uma linguagem que não a implementa por padrão.
fonte