ECMascript6 prend déjà en charge la classe, mais aucune des versions précédentes ne prend en charge les classes, mais certaines méthodes peuvent être utilisées pour simuler des classes.
Les classes en JS sont à la fois des points clés et des points difficiles, et se sentent souvent ambigus.
Tout d'abord, je voudrais souligner trois points de connaissance très importants dans JS: ceci, prototype et constructeur.
Résumons les méthodes de définition des classes (de simulation):
1. Modèle d'usine
function createObject (name, age) {var obj = new object (); obj.name = name; obj.age = âge; obj.getName = function () {return this.name; }; obj.getage = function () {return this.age; } return obj;} var obj2 = createObject ("wang wu", 19); console.log (obj2.getName ()); console.log (obj2.getage ()); console.log (obj2.constructor);La méthode du mode d'usine crée un objet. Le mode d'usine peut créer un objet contenant les informations nécessaires en fonction des paramètres acceptés. Cette méthode peut être appelée infiniment plusieurs fois, et chaque fois elle renvoie un objet contenant 2 attributs et 2 méthodes. Le modèle d'usine résout le problème de la création d'objets similaires, mais ne résout pas le problème de la reconnaissance des objets, c'est-à-dire que la catégorie d'un objet ne peut pas être déterminée et unifiée dans un objet.
2. Méthode du constructeur
Personne de fonction (nom, âge, travail) {this.name = name; this.age = âge; this.job = job;} personne.prototype = {constructeur: personne, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = new personne ("Ermazi", 18, "Worker"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());Bien que la méthode du constructeur détermine le problème de la propriété de l'objet et puisse déterminer le type de l'objet, les méthodes du constructeur doivent être recréées dans chaque objet, entraînant des problèmes de performance.
3. Mode prototype
fonction personne () {} personne.prototype = {constructeur: personne, nom: "Zhang san", âge: 21, travail: "professeur", getName: function () {return this.name; }, getJob: function () {return this.job; }} var p = new personne (); console.log (p.getName ()); // Zhang San Console.log (P.GetJob ()); // Teacherervar p2 = new personne (); p2.Name = "li si"; console.log (p2.getName ()); // li siÀ partir du code d'instance, nous pouvons savoir qu'une instance d'objet peut accéder à la valeur du prototype, mais ne peut pas réécrire la valeur du prototype. Si un attribut qui est dupliqué avec le prototype est défini dans l'instance d'objet, alors l'attribut bloquera l'attribut dans le prototype, mais ne sera pas réécrit.
4. Emballage (appelons ça pour le moment)
var dog = {Createdog: function () {var dog = {}; dog.name = "wangwang"; dog.sayhello = function () {console.log ("Hello World!"); }; chien de retour; }}; var dog = dog.createdog (); dog.sayhello ();Il s'agit d'encapsuler tout le code et de renvoyer l'objet d'instance dans son ensemble, ce qui est un peu similaire au modèle d'usine.
Les classes de définition JS ci-dessus (recommandées) des classes de définition sont tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.