ECMascript6 unterstützt bereits die Klasse, aber keine der vorherigen Versionen unterstützt Klassen, aber einige Methoden können verwendet werden, um Klassen zu simulieren.
Klassen in JS sind sowohl wichtige als auch schwierige Punkte und fühlen sich oft mehrdeutig an.
Erstens möchte ich drei sehr wichtige Wissenspunkte in JS betonen: diesen, Prototyp und Konstruktor.
Fassen wir die Methoden zum Definieren von Klassen (Simulations-) Klassen zusammen:
1. Fabrikmodell
Funktion createObject (Name, Alter) {var obj = new Object (); obj.name = name; obj.age = Alter; 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);Die Werksmodusmethode erstellt ein Objekt. Der Werksmodus kann ein Objekt erstellen, das die erforderlichen Informationen basierend auf den akzeptierten Parametern enthält. Diese Methode kann unendlich viele Male genannt werden und jedes Mal, wenn sie ein Objekt mit 2 Attributen und 2 Methoden zurückgibt. Das Fabrikmuster löst das Problem des Erstellens ähnlicher Objekte, löst jedoch nicht das Problem der Objekterkennung, dh die Kategorie eines Objekts kann nicht in einem Objekt bestimmt und einheitlich sein.
2. Konstruktormethode
Funktionsperson (Name, Alter, Job) {this.name = name; this.age = Alter; this.job = Job;} Person.Prototype = {Konstruktor: Person, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = new Person ("ermazi", 18, "Arbeiter"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());Obwohl die Methode des Konstruktors das Eigentumsproblem des Objekts bestimmt und den Typ des Objekts bestimmen kann, müssen die Methoden des Konstruktors in jedem Objekt nachgebildet werden, was zu einigen Leistungsproblemen führt.
3. Prototypmodus
Funktion person () {} Person.Prototype = {Konstruktor: Person, Name: "Zhang san", Alter: 21, Job: "Lehrer", getName: function () {return this.name; }, getJob: function () {return this.job; }} var p = new Person (); console.log (p.getName ()); // Zhang san console.log (p.getJob ()); // TeacherVar p2 = new Person (); p2.name = "li si"; console.log (p2.getName ()); // Li SiAus dem Instanzcode können wir wissen, dass eine Objektinstanz auf den Wert im Prototyp zugreifen kann, den Wert im Prototyp jedoch nicht umschreiben kann. Wenn in der Objektinstanz ein Attribut mit dem Prototyp definiert wird, blockiert das Attribut das Attribut im Prototyp, wird jedoch nicht umschreiben.
4. Verpackung (nennen wir es vorerst)
var dog = {createdog: function () {var hunde = {}; Dog.name = "Wangwang"; Dog.sayhello = function () {console.log ("Hallo Welt!"); }; Rückkehrhund; }}; var hunde = dog.createdog (); Dog.sayhello ();Es soll den gesamten Code zusammenfassen und das Instanzobjekt als Ganzes zurückgeben, was dem Fabrikmuster ein bisschen ähnlich ist.
Die obigen Methoden (empfohlen) von JS Definitionsklassen sind alle Inhalte, die ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.