


Exemples de code détaillés de modèles d'objets de création JavaScript et de bonnes pratiques
"Créer des objets" en JavaScript est un sujet complexe. Ce langage offre de nombreuses façons de créer des objets, et les débutants comme les utilisateurs expérimentés peuvent ne pas savoir laquelle choisir. Cependant, bien qu'il existe de nombreuses façons de créer des objets et que la syntaxe puisse sembler très différente, elles peuvent en réalité être plus similaires que vous ne le pensez. Cet article vous fera découvrir les méthodes de création d'objets, révélant les dépendances et les relations progressives entre les différentes méthodes.
Littéraux d'objets
Notre premier arrêt est sans aucun doute le moyen le plus simple de créer des objets, des littéraux d'objets. JavaScript prêche toujours qu'il peut créer des objets "à partir de rien" - pas de classes, pas de modèles, pas de prototypes - et "pop", un objet avec des méthodes et des données apparaît.
var o = { x: 42, y: 3.14, f: function() {}, g: function() {} };
Mais cette méthode a un inconvénient : si on veut créer un objet du même type ailleurs, il faut copier et coller les méthodes, les données et l'initialisation de cet objet. Nous avons besoin d’un moyen de créer des objets du même type par lots au lieu d’un seul.
Fonction d'usine
Notre prochain arrêt est la fonction d'usine. Évidemment, il est plus simple d’utiliser cette méthode pour créer une classe d’objets avec la même structure, interface et implémentation. Nous ne créons pas directement un littéral d'objet, mais utilisons le littéral d'objet comme valeur de retour de la fonction. Lorsque nous devons créer des objets du même type plusieurs fois ou à plusieurs endroits, il nous suffit d'appeler cette fonction.
function thing() { return { x: 42, y: 3.14, f: function() {}, g: function() {} }; } var o = thing();
Mais cette approche a aussi un inconvénient : elle entraînera une extension de mémoire, car chaque objet contient une copie indépendante de la fonction d'usine. En théorie, nous voulons que tous les objets partagent une copie de la fonction d'usine.
Prototype Chain
JavaScript fournit un mécanisme intégré pour partager des données entre objets, appelé chaîne de prototypes. Lorsque nous accédons à la propriété d'un objet, il délègue à un autre objet pour compléter la demande. Nous pouvons utiliser cela pour modifier la fonction d'usine afin que chaque objet qu'elle crée contienne uniquement ses propres données uniques, tandis que les demandes d'autres propriétés sont toutes déléguées à un objet commun sur la chaîne de prototypes.
var thingPrototype = { f: function() {}, g: function() {} }; function thing() { var o = Object.create(thingPrototype); o.x = 42; o.y = 3.14; return o; } var o = thing();
En fait, JavaScript lui-même possède des mécanismes intégrés pour prendre en charge ce modèle commun. Nous n'avons pas besoin de créer nous-mêmes cet objet partagé (c'est-à-dire l'objet prototype). JavaScript créera automatiquement un objet prototype pour chaque fonction. Nous pouvons mettre les données partagées directement dans cet objet.
thing.prototype.f = function() {}; thing.prototype.g = function() {}; function thing() { var o = Object.create(thing.prototype); o.x = 42; o.y = 3.14; return o; } var o = thing();
Mais cette méthode présente aussi un inconvénient : elle entraînera des doublons. Les première et dernière lignes de la fonction chose ci-dessus sont répétées dans chaque "fonction d'usine du prototype délégué", avec presque aucune différence.
Classes ES5
Nous pouvons extraire ces codes répétitifs et les mettre dans une fonction personnalisée. Cette fonction créera un objet et établira une relation de délégation (héritage) avec le prototype d'une autre fonction arbitraire (fonction paramètre). Ensuite, nous utilisons l'objet nouvellement créé comme paramètre, appelons cette fonction (fonction paramètre) et finalement renvoyons-le. nouvel objet.
function create(fn) { var o = Object.create(fn.prototype); fn.call(o); return o; } // ... Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = create(Thing);
En fait, JavaScript prend également en charge cette méthode. La fonction create que nous avons définie est en fait une implémentation de base du mot-clé new, nous pouvons donc facilement remplacer create par new.
Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = new Thing();
La station à laquelle nous sommes arrivés est souvent appelée la classe ES5. Il crée des objets via des fonctions, délègue les données qui doivent être partagées à des objets prototypes et utilise le nouveau mot-clé pour gérer la logique répétée.
Mais cette méthode a aussi un inconvénient : elle est verbeuse et moche, et elle le sera encore plus lors de l'implémentation de l'héritage.
Classes ES6
La dernière amélioration connexe de JavaScript concerne les classes ES6, qui sont beaucoup plus simples à implémenter les fonctions ci-dessus avec une nouvelle syntaxe.
class Thing { constructor() { this.x = 42; this.y = 3.14; } f() {} g() {} } var o = new Thing();
Comparaison
Pendant de nombreuses années, les développeurs JavaScript ont toujours eu une relation distante et intriquée avec la chaîne de prototypes. Les deux manières que nous sommes les plus susceptibles de rencontrer aujourd'hui sont la syntaxe de classe qui s'appuie fortement sur la chaîne de prototypes, et l'autre est la syntaxe de fonction d'usine qui ne repose pas du tout sur la chaîne de prototypes. Les deux méthodes sont différentes en termes de performances et de fonctionnalités – mais pas trop.
Performances
Les moteurs JavaScript d'aujourd'hui ont été tellement optimisés qu'il est difficile de déduire du code JavaScript ce qui sera plus rapide. La clé réside dans la méthode de mesure. Pourtant, les méthodes de mesure échouent parfois. Un moteur JavaScript mis à jour est généralement publié toutes les six semaines, et les mesures prises avant cette date, ainsi que les décisions prises sur la base de ces mesures, peuvent perdre tout leur sens. Par conséquent, ma règle générale est de choisir la syntaxe la plus officielle et la plus utilisée, car la plupart du temps, elle a été la plus testée dans la pratique et a donc les performances les plus élevées. La syntaxe de classe est actuellement la meilleure pour cela, et au moment où j'écris cet article, la syntaxe de classe est environ 3 fois plus rapide qu'une fonction d'usine qui renvoie un littéral.
Fonctionnalités
Avec la sortie d'ES6, les quelques différences qui existaient autrefois entre les classes et les fonctions d'usine ont disparu. Désormais, les fonctions et les classes d'usine peuvent appliquer des données véritablement privées - les fonctions d'usine via Closures et les classes via WeakMap. Les deux peuvent implémenter plusieurs héritages : les fonctions d'usine peuvent mélanger d'autres propriétés dans leurs propres objets, et les classes peuvent mélanger d'autres propriétés dans leurs propres prototypes, ou via des usines de classes, ou via des proxys. Les fonctions et classes d'usine peuvent également renvoyer n'importe quel objet en cas de besoin, et la syntaxe est très simple.
Conclusion
En tenant compte de tout, je préfère la syntaxe de classe. Il est standard, simple, propre, rapide et fournit toutes les fonctionnalités qui n'étaient autrefois disponibles que dans les usines de fonctions.
Ce qui précède est une explication détaillée des exemples de code des modèles d'objets de création JavaScript et des meilleures pratiques. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





La conversion de chaînes en nombres à virgule flottante en PHP est une exigence courante lors du processus de développement. Par exemple, le champ de montant lu dans la base de données est de type chaîne et doit être converti en nombres à virgule flottante pour les calculs numériques. Dans cet article, nous présenterons les meilleures pratiques pour convertir des chaînes en nombres à virgule flottante en PHP et donnerons des exemples de code spécifiques. Tout d'abord, nous devons préciser qu'il existe deux manières principales de convertir des chaînes en nombres à virgule flottante en PHP : en utilisant la conversion de type (float) ou en utilisant la fonction (floatval). Ci-dessous, nous présenterons ces deux

Quelles sont les meilleures pratiques pour la concaténation de chaînes dans Golang ? Dans Golang, la concaténation de chaînes est une opération courante, mais l'efficacité et les performances doivent être prises en compte. Lorsqu'il s'agit d'un grand nombre de concaténations de chaînes, le choix de la méthode appropriée peut améliorer considérablement les performances du programme. Ce qui suit présentera plusieurs bonnes pratiques pour la concaténation de chaînes dans Golang, avec des exemples de code spécifiques. Utilisation de la fonction Join du package strings Dans Golang, l'utilisation de la fonction Join du package strings est une méthode d'épissage de chaînes efficace.

Lorsque vous utilisez des frameworks Go, les meilleures pratiques incluent : Choisissez un framework léger tel que Gin ou Echo. Suivez les principes RESTful et utilisez des verbes et des formats HTTP standard. Tirez parti du middleware pour simplifier les tâches telles que l’authentification et la journalisation. Gérez correctement les erreurs, en utilisant des types d’erreurs et des messages significatifs. Écrire des tests unitaires et d'intégration pour garantir le bon fonctionnement de l'application.

En langage Go, une bonne indentation est la clé de la lisibilité du code. Lors de l'écriture de code, un style d'indentation unifié peut rendre le code plus clair et plus facile à comprendre. Cet article explorera les meilleures pratiques en matière d'indentation dans le langage Go et fournira des exemples de code spécifiques. Utilisez des espaces au lieu des tabulations Dans Go, il est recommandé d'utiliser des espaces au lieu des tabulations pour l'indentation. Cela peut éviter les problèmes de composition causés par des largeurs de tabulation incohérentes dans différents éditeurs. Le nombre d'espaces pour l'indentation. Le langage Go recommande officiellement d'utiliser 4 espaces comme nombre d'espaces pour l'indentation. Cela permet au code d'être

Les frameworks Java conviennent aux projets où la multiplateforme, la stabilité et l'évolutivité sont cruciales. Pour les projets Java, Spring Framework est utilisé pour l'injection de dépendances et la programmation orientée aspect, et les meilleures pratiques incluent l'utilisation de SpringBean et SpringBeanFactory. Hibernate est utilisé pour le mappage objet-relationnel, et la meilleure pratique consiste à utiliser HQL pour les requêtes complexes. JakartaEE est utilisé pour le développement d'applications d'entreprise et la meilleure pratique consiste à utiliser EJB pour la logique métier distribuée.

Meilleures pratiques PHP : alternatives pour éviter les instructions Goto explorées Dans la programmation PHP, une instruction goto est une structure de contrôle qui permet un saut direct vers un autre emplacement dans un programme. Bien que l'instruction goto puisse simplifier la structure du code et le contrôle de flux, son utilisation est largement considérée comme une mauvaise pratique car elle peut facilement entraîner une confusion dans le code, une lisibilité réduite et des difficultés de débogage. Dans le développement réel, afin d'éviter d'utiliser les instructions goto, nous devons trouver des méthodes alternatives pour obtenir la même fonction. Cet article explorera quelques alternatives,

Le rôle et les meilleures pratiques des fichiers .env dans le développement de Laravel Dans le développement d'applications Laravel, les fichiers .env sont considérés comme l'un des fichiers les plus importants. Il contient certaines informations de configuration clés, telles que les informations de connexion à la base de données, l'environnement de l'application, les clés de l'application, etc. Dans cet article, nous approfondirons le rôle des fichiers .env et les meilleures pratiques, ainsi que des exemples de code concrets. 1. Le rôle du fichier .env Tout d'abord, nous devons comprendre le rôle du fichier .env. Dans un Laravel devrait

Contrôle de version : le contrôle de version de base est une pratique de développement logiciel qui permet aux équipes de suivre les modifications dans la base de code. Il fournit un référentiel central contenant toutes les versions historiques des fichiers de projet. Cela permet aux développeurs d'annuler facilement les bogues, d'afficher les différences entre les versions et de coordonner les modifications simultanées de la base de code. Git : système de contrôle de version distribué Git est un système de contrôle de version distribué (DVCS), ce qui signifie que l'ordinateur de chaque développeur dispose d'une copie complète de l'intégralité de la base de code. Cela élimine la dépendance à l’égard d’un serveur central et augmente la flexibilité et la collaboration des équipes. Git permet aux développeurs de créer et de gérer des branches, de suivre l'historique d'une base de code et de partager les modifications avec d'autres développeurs. Git vs contrôle de version : principales différences entre distribution et ensemble
