Je lis à travers Javascript: The Good Parts , et j'ai eu du mal à me familiariser avec la section sur les prototypes .
Après un petit google, je suis arrivé à la conclusion que c'était pour ajouter des propriétés aux objets après la déclaration des objets.
En utilisant ce script luisant de w3schools, j'ai remarqué que la suppression de la ligne ajoutant la propriété prototype n'avait aucun effet . Alors à quoi ça sert?
//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
Doux Fuzz
la source
la source
Réponses:
Ce n'est pas ainsi que fonctionne le prototype. Le prototype est utilisé dans la chaîne de prototypes.
Chaque fois que vous essayez d'obtenir une propriété sur un objet, il vérifiera l'objet pour ce nom de propriété. S'il n'existe pas, il cherchera dans le prototype.
Exemple:
Le but du prototype est donc simplement la réutilisation et l'héritage du code.
la source
prototype is undefined
---o.prototype.newProp = "mutts nuts";
o
est un objet. La.prototype
propriété est utilisée sur les fonctions, ignorez-la.o.newProp = "mutts nuts"
Lorsque vous l'avez fait,
fred.salary=20000
vous n'avez ajouté l'attribut de salaire qu'à fred. Lors de l'utilisation du prototype, tous les employés que vous créerez à partir de ce moment auront l'attribut de salaire.Supposons que vous ayez 100 instances d'employés et que vous vouliez ajouter un attribut de salaire à chacun d'eux. Vous pouvez le faire manuellement, itérer sur chaque employé et l'ajouter. Ou vous pouvez utiliser le prototype et le définir pour tous.
Le prototype est utile lorsque vous souhaitez utiliser une fonctionnalité sur quelque chose qui existe déjà. Supposons que vous souhaitiez ajouter une méthode personnalisée aux tableaux. Vous feriez quelque chose comme:
À partir de là, tous les tableaux que vous créerez auront cette méthode disponible.
la source
Vous voudrez peut-être jeter un œil à cet article .
Si vous ajoutez une propriété à un objet utilisé comme prototype pour un ensemble d'objets, les objets pour lesquels il s'agit du prototype obtiennent également la nouvelle propriété.
C'est l'un des principaux avantages d'un langage basé sur un prototype par rapport à un langage basé sur une classe.
En outre, il est facile d'obtenir un héritage OO classique avec JS si vous en avez besoin, mais il est souvent difficile d'obtenir un modèle prototype pour un langage qui ne l'implémente pas par défaut.
la source