L'un des principaux avantages de Javascript est qu'il s'agit d'un langage basé sur des prototypes.
Mais qu'est-ce que cela signifie que Javascript est basé sur un prototype, et pourquoi est-ce un avantage ?
L'un des principaux avantages de Javascript est qu'il s'agit d'un langage basé sur des prototypes.
Mais qu'est-ce que cela signifie que Javascript est basé sur un prototype, et pourquoi est-ce un avantage ?
Héritage prototypique est une forme d'orientation objet réutilisation du code . Javascript est l'un des seuls langages orientés objet [grand public] à utiliser l'héritage prototypique. Presque tous les autres langages orientés objet sont classiques.
Sur héritage classique Le programmeur écrit une classe, qui définit un objet. Plusieurs objets peuvent être instanciés à partir de la même classe, de sorte que vous disposez d'un code unique qui décrit plusieurs objets dans votre programme. Les classes peuvent ensuite être organisées en une hiérarchie, ce qui favorise la réutilisation du code. Le code plus général est stocké dans une classe de niveau supérieur, dont héritent les classes de niveau inférieur. Cela signifie qu'un objet partage du code avec d'autres objets de la même classe, ainsi qu'avec ses classes parentes.
En el héritage prototypique forme, objets hériter directement d'autres objets. Tout ce qui concerne les classes disparaît. Si vous voulez un objet, vous écrivez simplement un objet. Mais la réutilisation du code est toujours une chose précieuse, donc les objets peuvent être liés entre eux dans une hiérarchie. En javascript, chaque objet a un lien secret avec l'objet qui l'a créé, formant une chaîne. Lorsqu'on demande à un objet une propriété qu'il n'a pas, on demande à son objet parent... et ainsi de suite jusqu'à ce que la propriété soit trouvée ou que l'objet racine soit atteint.
Chaque fonction en JavaScript (qui sont elles-mêmes des objets) possède en fait un membre appelé "prototype", qui est chargé de fournir des valeurs lorsque l'objet les demande. La présence de ce membre permet au mécanisme du constructeur (par lequel les objets sont construits à partir de fonctions) de fonctionner. L'ajout d'une propriété au prototype d'un objet fonction la rendra disponible à l'objet construit, ainsi qu'à tous les objets qui en héritent.
Avantages
Il n'y a peut-être pas de règle absolue expliquant pourquoi l'héritage prototypique est une forme avantageuse de réutilisation du code. La réutilisation du code en elle-même est avantageuse, et l'héritage prototypique est une manière raisonnable de s'y prendre. Vous pourriez argumenter que l'héritage prototypique est une forme de réutilisation du code assez simple. modèle simple de la réutilisation du code, et que le code peut être fortement réutilisé en moyens directs . Mais les langues classiques sont certainement capables d'accomplir cela aussi.
Sidenote : @Andrew Hedges fait un bon point, qu'il y a en fait beaucoup de les langages prototypiques. Il est intéressant de noter que ces autres langages existent, mais aussi qu'aucun d'entre eux n'est proche du courant dominant. NewtonScript a semblé avoir un certain attrait pendant un certain temps, mais est mort avec sa plate-forme. Il est également possible d'étendre certains langages modernes de manière à ajouter des capacités de prototypage.
Hey Kelly. Bien que JavaScript soit de loin le langage prototypique le plus populaire, il en existe de nombreux autres : fr.wikipedia.org/wiki/Prototype-based_programming#Languages
Un langage basé sur des prototypes ne fait pas la distinction entre classes et objets : il a simplement des objets. Un langage basé sur des prototypes a la notion d'objet prototypique, un objet utilisé comme modèle à partir duquel on peut obtenir les propriétés initiales d'un nouvel objet. Tout objet peut spécifier ses propres propriétés, soit lors de sa création, soit au moment de son exécution. En outre, tout objet peut être associé comme prototype d'un autre objet ce qui permet au deuxième objet de partager les propriétés du premier.
L'avantage/inconvénient est que nous pouvons créer de nouveaux types d'objets au moment de l'exécution sans avoir besoin de définir des classes (code statique). Comme la plupart des fonctionnalités, c'est au développeur d'en faire un avantage/inconvénient.
Ce qui précède est possible parce que les objets sont essentiellement des fonctions en java script (les fermetures aussi).
Les objets dynamiques sont un avantage de javascript, mais ils ne sont pas vraiment liés au fait que javascript est un langage prototypique ou fonctionnel. Dans de nombreux langages classiques, vous pouvez créer des objets dynamiques au moment de l'exécution. Les fermetures ne sont pas vraiment liées non plus.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Cette réponse explique tout ce que vous devez savoir sur l'héritage prototypique : stackoverflow.com/a/16872315/783743