Maison > Article > interface Web > Méthodes prototypes ou méthodes constructeur en JavaScript : est-ce vraiment plus rapide ?
En JavaScript, il existe deux approches pour définir des méthodes publiques pour les classes : via le prototype ou en utilisant le constructeur fonction. Bien que l'approche prototype soit considérée comme plus efficace en raison des références de fonctions partagées, il y a un impact potentiel sur les performances à prendre en compte.
function MyClass() { var privateInstanceVariable = 'foo'; this.myFunc = function() { alert(privateInstanceVariable ); } }
Dans cette méthode, chaque instance de la classe a sa propre variable d'instance privée et sa propre copie de la méthode myFunc.
function MyClass() { } MyClass.prototype.myFunc = function() { alert("I can't use private instance variables. :("); }
Ici, la méthode myFunc est définie sur le prototype de classe. Toutes les instances partagent la même référence de fonction, améliorant potentiellement les performances.
Selon un test de performances JavaScript (https://jsperf.app/prototype-vs-this), déclarer des méthodes via le prototype est en effet plus rapide. Cependant, l'importance de cette différence est discutable.
À moins que vous ne créiez et détruisiez des milliers d'objets à plusieurs reprises, l'impact sur les performances est probablement négligeable. Dans la plupart des cas, il est plus important d'utiliser l'approche qui a le plus de sens pour la lisibilité et la maintenabilité de votre code.
Il est important de noter que même si la méthode 1 prend en charge les variables d'instance privées, elles ne sont considérés que par convention comme privés. Les développeurs peuvent toujours y accéder s'ils le souhaitent. Pour protéger les variables contre tout accès extérieur, envisagez de les déclarer avec un trait de soulignement (par exemple, _process()) ou d'implémenter des getters et setters personnalisés pour appliquer l'encapsulation.
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!