function, prototype

Eléphant du PHP | 101 Messages

03 févr. 2017, 17:49

Bonjour à tous,

En lisant des modules node.js pour apprendre, je me rends compte que certains de ces modules déclarent des fonctions comme ceci dans le fichier du module:

function test () {

}

D'autres déclarent comme ceci:
monmodule.prototype.test = function () {

}

D'autres utilisent un mix des deux. Comment décider quelle approche utiliser et dans quels cas?
En vous remerciant pour vos réponses.

Eléphant du PHP | 101 Messages

05 févr. 2017, 14:38

Un début de réponse après quelques recherches:

Prototype permet à toutes les instances de la "classe" de partager les méthodes créées. Alors qu'avec une déclaration function, chaque instance a une copie distincte des méthodes créées.

2 implications:
- prototype permet une amélioration de la performance, puisque les méthodes ne sont pas dupliquées pour chaque instance
- lorsqu'une méthode est modifiée, toutes les instances sont mises à jour avec prototype, ce qui n'est pas le cas avec function

Il y a d'autres implications mais mon niveau modeste en javascript ne me permet pas pour l'instant d'en comprendre plus.
Si vous avez des commentaires ou des compléments sur ces concepts, ils sont les bienvenus!