« Programmation objet et géométrie/CaRScripts et nombres complexes » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 124 :
Tout ceci fonctionne très bien, de façon dynamique et interactive. Mais la gestion de la mémoire n'est pas optimisée parce que, chaque fois qu'on crée un nouveau nombre complexe par ''new complexe(a,b)'', les méthodes de l'objet ''complexe'' sont stockées avec la nouvelle [[w:Instance (programmation)|instance]] de celui-ci, ce qui, lorsqu'on crée un grand nombre de complexes, encombre inutilement la mémoire de JavaScript, surtout si on n'utilise pas toutes ces méthodes!
 
Pour remédier à ce (petit) problème, on peut définir les méthodes une fois pour toutes, dans la [[w:classe|Classe (informatique)|classe]] ''complexe'', les méthodes, qui seront alors héritées par l'objet au moment de son instanciation (ou création). Seulement voilà: JavaScript ne possède pas de classes... Alors on fait avec ce qu'on a, c'est-à-dire avec un [[w:prototype|Programmation orientée prototype|prototype]]. Maintenant l'objet ''complexe'' est toujours défini mais seulement avec ses trois propriétés ''reelle'', ''imaginaire'' et ''image''. Les méthodes sont toutes définies dans lale prototype du nombre complexe (qui est d'ailleurs un objet: L'objet ''complexe'' est aussi une méthode de l'objet ''prototype''!) comme on le voit ci-dessous:
 
<source lang="javascript">