Dans l'article précédent, les objets et les prototypes dans JavaScript (i) ont mentionné certaines opérations de base dans la création d'objets en JavaScript et continueront à en discuter ensuite.
Un modèle d'usine
Nous savons que pour créer un objet, nous pouvons utiliser le code suivant:
var user = new object (); // Créer un objet utilisant le nouvel opérateur user.name = 'Récité sur le lac Triangle'; // Ajouter des attributs à l'objet user.age = 22; user.address = 'hubei wuhan'; alert (user.name + "" + user.age); // retour «Récité sur le lac Triangle« Hubei Wuhan »
La création d'objets de cette manière est simple et intuitive, et c'est aussi la méthode la plus élémentaire de création d'objets en JavaScript. Mais il y a un problème comme celui-ci, si nous devons créer plusieurs objets, alors je dois écrire beaucoup de code en double. Par exemple, si nous voulons créer un autre objet User1, nous devons réécrire à nouveau le code ci-dessus, ce qui est inapproprié dans le processus de développement réel. De cette façon, s'il y a trop d'objets, la quantité de code augmentera considérablement.
Pour résoudre un tel problème, nous pouvons utiliser une méthode appelée Modèle d'usine, qui consiste à résoudre le problème des objets instanciants produisant une grande quantité de code en double.
fonction create (name, age) {var obj = new object (); obj.name = name; obj.age = âge; obj.run = function () {return this.name + '' + this.age; }; return obj;} var obj1 = create ('zxc', 10); // la première instance var obj2 = create ('cxz', 20); // la deuxième instance alerte (obj1.run ()); alert (obj1.run ());D'après le code ci-dessus, nous pouvons voir que le modèle d'usine résout le problème de la duplication à grande échelle du code pendant l'instanciation, mais un autre problème se pose, c'est-à-dire en identifiant le problème, nous ne pouvons pas déterminer quel objet ils sont. Par exemple
alerte (typeof obj1); // OBJECTALERT (obj1 instance Of objet); //vrai
Le code ci-dessus indique que Box1 est un objet d'objet, mais nous ne pouvons pas savoir quel objet a été créé.
Deux constructeurs (méthode de construction)
Afin de résoudre le problème ci-dessus, nous pouvons utiliser des constructeurs pour créer des objets. La seule différence entre un constructeur et une fonction normale est que la méthode d'appel est différente. Cependant, le constructeur est également une fonction.
fonction user (nom, âge) {// mode constructeur this.name = name; this.age = âge; this.run = function () {return this.name + '' + this.age; };}Utilisez simplement le nouvel opérateur lors de la création d'un objet:
var user1 = new User ('zxc', 25); var user2 = new User ('cxz', 22);Nous pouvons maintenant détecter si User1 ou User2 appartient à l'utilisateur.
alert (user1 instanceof utilisateur); // true
On peut voir que l'utilisation de la méthode du constructeur résout le problème de l'instanciation répétée et résout également le problème de la reconnaissance des objets.
Le processus d'exécution lors de l'utilisation d'un constructeur est le suivant:
1. Lors de l'exécution du nouveau constructeur (), l'arrière-plan exécute un nouvel objet ();
2. Étendez le constructeur du nouvel objet.
3. Exécutez le code à l'intérieur du constructeur;
4. L'arrière-plan renvoie directement le nouvel objet.
Ensuite, jetons un coup d'œil aux problèmes de fonction à l'intérieur du constructeur. Si nous exécutons l'instruction suivante:
alert (user1.run == user2.run); // le résultat renvoie false
Le résultat renvoie false, ce qui signifie que la méthode est en fait une adresse de référence. Si nous créons plusieurs objets à plusieurs reprises, les méthodes de chaque objet ouvriront un nouvel espace en mémoire, ce qui gaspillera plus d'espace. Pour résoudre ce problème, nous devons utiliser le partage des propriétés ou méthodes d'instance. Nous continuerons à discuter de la résolution de ce problème dans le prochain article.
Ce qui précède est les objets et les prototypes de JavaScript qui vous sont présentés par l'éditeur (II). J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!