Il existe plusieurs modes en js pour créer des objets et exploiter les propriétés et méthodes contenues dans les objets.
De manière générale, la première lettre du nom du constructeur est une lettre majuscule, et la première lettre du nom de la fonction non constructeur est une lettre minuscule. Bien sûr, la seule différence entre un constructeur et une fonction générale est juste le. façon de l'appeler, donc tant qu'une fonction est appelée via new, elle peut être utilisée comme constructeur. Si elle n'est pas appelée via new, c'est la même chose qu'une fonction normale.
Parlez de ma compréhension de ces modes :
Mode usine : créez une fonction générale, créez un objet Object dans la fonction, ajoutez des propriétés et des méthodes à l'objet, attribuez sa valeur et enfin renvoyez l'objet. Type d'objet non reconnu.
Modèle de constructeur : Créez un constructeur, utilisez-le pour attribuer des valeurs, chaque fois qu'une instance est créée, la méthode est créée une fois et chaque méthode exécute la même commande, qui est redondant. Cette lacune peut être résolue en plaçant la méthode dans l’environnement global, mais il n’y a alors pas d’encapsulation. Mais cela peut être résolu grâce au mode prototype.
Modèle de prototype : Chaque fonction possède un attribut de prototype, qui est un pointeur vers un objet qui contient des propriétés partagées par toutes les instances créées par sa méthode de fonction.
La relation entre les objets prototypes, les constructeurs et les instances est la suivante :
Illustration : 1 : Constructeurs et instances créés par les constructeurs, leurs attributs de prototype pointent vers l'objet prototype du constructeur.
2 : L'objet prototype du constructeur a un attribut constructeur, qui pointe vers le constructeur.
3 : Toutes les propriétés et méthodes contenues dans l'objet prototype du constructeur peuvent être partagées par toutes les instances créées par le constructeur.
Après avoir réécrit l'objet prototype à l'aide de littéraux d'objet, le constructeur pointe vers le constructeur de l'objet. Si vous en avez besoin pour pointer vers un autre constructeur, vous devez modifier la valeur de l'attribut constructeur de l'objet prototype, tel que : constructeur : Person, de sorte que le prototype de Person Même si l'objet est remplacé, le constructeur de l'objet prototype pointe toujours vers le constructeur Person.
Lors de la première création d'une instance : si des attributs ou des méthodes sont ajoutés directement, l'instance est accessible.
Si l'objet prototype est remplacé, le prototype du constructeur pointe vers le nouvel objet prototype, et le prototype de l'instance créée précédemment pointe toujours vers l'objet prototype d'origine, donc l'instance ne peut pas accéder aux nouvelles propriétés ou aux nouvelles méthodes de le nouvel objet prototype.
L'objet prototype contient des propriétés et des méthodes partagées, donc chaque instance possède ces informations, il n'y a donc aucune différence entre les instances et les paramètres ne peuvent pas être transmis, ce qui n'est pas ce que nous voulons. Il existe des informations communes et des informations différentes entre chaque instance, nous pouvons donc utiliser le modèle constructeur et le modèle prototype en combinaison.
Utilisation combinée du modèle constructeur et du modèle prototype :
Mode prototype statique : combinez un constructeur indépendant avec son objet prototype, initialisez le prototype dans le constructeur et ajoutez-y des méthodes.
Modèle de constructeur parasite : similaire au modèle d'usine, la différence est la suivante : le modèle de constructeur parasite est un constructeur et crée des instances via new. Bien sûr, modèle de constructeur : il n'y a pas de propriétés publiques et ses méthodes ne font pas référence à cet objet. N'utilisez pas new lors de la création d'une instance. Les propriétés (c'est-à-dire les données transmises) ne sont accessibles que via des méthodes.
L'introduction ci-dessus à plusieurs modes de création d'objets en JavaScript est tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence, et j'espère que vous soutiendrez Script Home.