K

Les objets

Héritage et prototype

JavaScript est un langage de programmation orienté objet qui utilise un système d'héritage basé sur les prototypes. Cela signifie que les objets héritent de propriétés et de méthodes à partir de prototypes parent plutôt que de classes. Y'en a meme qui disent que c'est un langage orienté prototype.


Héritage par prototypes

En JavaScript, tous les objets ont un prototype. Par défaut, l'objet prototype est Object.prototype, qui contient des méthodes courantes telles que toString() et valueOf().

Pour créer un objet qui hérite de propriétés et de méthodes à partir d'un prototype parent, nous pouvons utiliser la méthode Object.create() comme suit:

let animal = {
  type: 'animal',
  speak: function () {
    console.log('Je suis un animal qui parle')
  },
}

let chat = Object.create(animal)
chat.speak() // Affiche "Je suis un animal qui parle"
console.log(chat.type) // Affiche "animal"

Dans cet exemple, nous avons créé un objet animal avec un propriété type et une méthode speak(). Ensuite, nous avons créé un objet chat qui hérite de animal en utilisant Object.create(). Nous pouvons maintenant accéder à la propriété type et à la méthode speak() à partir de chat.

Ajout de propriétés et méthodes à un prototype Nous pouvons également ajouter des propriétés et des méthodes à un prototype existant en utilisant la notation de point. Par exemple:

animal.name = 'Animal Name'
animal.getName = function () {
  return this.name
}
console.log(chat.getName()) // Affiche "Animals Name"

Dans cet exemple, nous avons ajouté une propriété name et une méthode getName() à l'objet prototype animal, qui est hérité par l'objet chat.

Conclusion

L'héritage par prototypes en JavaScript permet une flexibilité supplémentaire par rapport aux systèmes d'héritage basés sur les classes. Il permet également une meilleure performance en évitant la création de nouvelles instances de classes pour chaque objet. Il est important de comprendre comment les prototypes fonctionnent pour utiliser efficacement les objets en JavaScript.

Précédent
Les objets natifs (String, Array, etc.)