Prototypes d'objets JavaScript
Tous les objets JavaScript héritent des propriétés et des méthodes d'un prototype.
Dans le chapitre précédent, nous avons appris à utiliser un constructeur d'objet :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Nous avons également appris qu'il est impossible d'ajouter une nouvelle propriété à un constructeur d'objet existant :
Exemple
Person.nationality = "English";
Pour ajouter une nouvelle propriété à un constructeur, vous devez l'ajouter à la fonction constructeur :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Héritage des prototypes
Tous les objets JavaScript héritent des propriétés et des méthodes d'un prototype :
Date
les objets héritent deDate.prototype
Array
les objets héritent deArray.prototype
Person
les objets héritent dePerson.prototype
Le Object.prototype
est au sommet de la chaîne d'héritage du prototype :
Date
les objets, Array
les objets et Person
les objets héritent de Object.prototype
.
Ajout de propriétés et de méthodes aux objets
Parfois, vous souhaitez ajouter de nouvelles propriétés (ou méthodes) à tous les objets existants d'un type donné.
Parfois, vous souhaitez ajouter de nouvelles propriétés (ou méthodes) à un constructeur d'objet.
Utilisation de la propriété prototype
La propriété JavaScript prototype
vous permet d'ajouter de nouvelles propriétés aux constructeurs d'objet :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
La propriété JavaScript prototype
permet également d'ajouter de nouvelles méthodes aux constructeurs d'objets :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
Ne modifiez que vos propres prototypes. Ne modifiez jamais les prototypes d'objets JavaScript standards.