Attribution de méthodes de prototype à l'intérieur du constructeur : inconvénients et problèmes de portée
Cette question aborde les inconvénients potentiels et les problèmes de portée inattendus qui peuvent survenir lors de l'attribution méthodes de prototype directement dans la fonction constructeur. La discussion découle d'une préférence pour l'attribution de méthodes prototypes dans le corps de la fonction, plutôt que de les déclarer séparément en dehors de la portée du constructeur.
Inconvénients :
Exemple de code :
<code class="javascript">var Counter = function (initialValue) { var value = initialValue; // Local variable of the constructor // Assigning prototype method within the constructor Counter.prototype.get = function () { return value++; }; }; var c1 = new Counter(0); var c2 = new Counter(10); console.log(c1.get()); // Outputs 10, should output 0</code>
Dans cet exemple, toutes les instances de l'objet Counter partagent la même méthode get prototype, mais chaque instance de méthode utilise la variable de valeur locale de sa propre instance, ce qui peut conduire à des résultats incorrects.
Considérations relatives aux performances :
Bien que l'affectation des méthodes prototypes au sein du constructeur puisse être moins efficace en termes d'utilisation de la mémoire, certains experts affirment que les moteurs JavaScript modernes ont amélioré la gestion de la mémoire, ce qui rend la pénalité en performances négligeable. L'affectation directe d'une méthode sur l'objet lui-même peut offrir de meilleures performances d'exécution dans ces cas.
Bonne pratique :
En tant que bonne pratique générale, il est généralement recommandé d'attribuer un prototype méthodes séparément en dehors de la fonction constructeur, plutôt que dans le corps de la fonction. Cela garantit la clarté, élimine les problèmes de portée potentiels et simplifie le débogage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!