Cet article décrit les méthodes de mise en œuvre des classes et des instances en JavaScript. Partagez-le pour votre référence. Les détails sont les suivants:
Il n'y a pas de concept de classe parent, de classe enfant et de classe et d'instance dans JavaScript. Tout dépend de la chaîne prototype pour atteindre l'héritage. Lorsque vous recherchez les propriétés d'un objet, JavaScript traversera la chaîne prototype vers le haut jusqu'à ce que les propriétés correspondantes soient trouvées. Il existe plusieurs méthodes qui peuvent faire simuler JavaScript les concepts de classe et d'instance.
1. Utilisez directement le constructeur pour créer un objet et utilisez-le pour se référer à l'instance d'objet à l'intérieur du constructeur.
Copiez le code comme suit: fonction animal () {
this.name = "animal";
}
Animal.prototype.makesound = function () {
console.log ("Sound animal");
}
[Fonction]
var animal1 = nouvel animal ();
animal1.name;
'animal'
animal1.makesound ();
son animal
Regardons un autre exemple:
Copiez le code comme suit: Point de fonction (x, y) {
this.x = x;
this.y = y;
}
Point.prototype = {
Method1: function () {console.log ("méthode1"); },
Method2: function () {console.log ("méthode2"); },
}
{méthode1: [fonction], méthode2: [fonction]}
var point1 = nouveau point (10, 20);
Point1.Method1 ();
Méthode 1
Point1.Method2 ();
Méthode2
Comme ci-dessus, spécifiez d'abord l'attribut prototype d'un objet constructeur. Ensuite, nouveau une instance de l'objet, vous pouvez appeler la méthode spécifiée dans le prototype.
2. Utilisez la méthode objet.create () pour créer un objet
Copiez le code comme suit: var animal = {
Nom: "Animal",
Makeound: function () {console.log ("Sound animal"); },
}
var animal2 = object.create (animal);
Animal2.Nom;
'animal'
console.log (animal2.name);
animal
animal2.makesound ();
son animal
Cette méthode est plus simple que la méthode du constructeur, mais elle ne peut pas implémenter des attributs privés et des méthodes privées, et les données ne peuvent pas être partagées entre les objets d'instance, donc la simulation de la classe n'est toujours pas suffisamment complète.
3. Approche minimaliste proposée par le programmeur néerlandais Gabor de Mooij. Utilisation recommandée.
Copiez le code comme suit: var animal = {
init: function () {
var animal = {};
animal.name = "animal";
animal.makesound = function () {console.log ("Sound animal"); };
Animal de retour;
}
};
var animal3 = animal.init ();
Animal3.Name;
'animal'
animal3.makesound ();
son animal
Sans utiliser le prototype et ceci, il vous suffit de personnaliser une init de constructeur. L'implémentation héritée est également très simple.
Copiez le code comme suit: var cat = {
init: function () {
var chat = animal.init ();
cat.Name2 = "cat";
Cat.Makesound = function () {Console.log ("Cat Sound"); };
Cat.Sleep = function () {Console.log ("Cat Sleep"); };
retour chat;
}
}
var cat = cat.init ();
cat.Name; // 'animal'
Cat.name2; // 'chat'
Cat.makesound (); // similaire à la surcharge de méthode
son de chat
Cat.Sleep ();
Cat Sleep
Utilisation de propriétés privées et de méthodes privées:
Copiez le code comme suit: var animal = {
init: function () {
var animal = {};
var son = "private animal sound"; // Attributs privés
animal.makesound = function () {console.log (son); };
Animal de retour;
}
};
var animal4 = animal.init ();
Animal.sound; // Les attributs privés non définis ne peuvent être lus que les propres méthodes de l'objet.
animal.sound; // Les attributs privés non définis ne peuvent être lus que via la propre méthode de l'objet.
Animal4.makesound ();
son animal privé
Tant que les propriétés et les méthodes non définies sur les objets animaux sont privées, elles ne sont pas accessibles par le monde extérieur.
Le partage de données peut être réalisé entre les classes et les instances.
Copiez le code comme suit: var animal = {
Sound: "Sound animal commun",
init: function () {
var animal = {};
animal.commonsound = function () {console.log (animal.sound); };
animal.changeSound = function () {animal.sound = "Sound animal commun changé"; };
Animal de retour;
}
}
var animal5 = animal.init ();
var animal6 = animal.init ();
Animal.sound; // peut être considéré comme un attribut de classe
'Sound animal commun'
animal5.sound; // L'objet d'instance ne peut pas accéder aux attributs de classe
indéfini
animal6.sound;
indéfini
animal5.commonsound ();
son animal commun
animal6.commonsound ();
son animal commun
Animal5.ChangeSound (); // Modifier les propriétés de classe
indéfini
Animal.sound;
'Sound animal commun'
animal5.commonsound ();
son animal commun
animal6.commonsound ();
son animal commun
Par exemple, Animal.Sound est les attributs partagés des classes et des instances, qui peuvent être considérés comme des attributs de classe et des méthodes de classe.
Si une instance modifie l'attribut commun, les attributs communs de la classe et d'autres instances sont également modifiés en conséquence.
En résumé, c'est le concept et l'utilisation de la classe et de l'instance simulées dans JavaScript.
J'espère que cet article sera utile à la programmation JavaScript de tous.