Im vorherigen Artikel erwähnten Objekte und Prototypen in JavaScript (i) einige grundlegende Operationen bei der Erstellung von Objekten in JavaScript und werden sie weiterhin als nächstes diskutieren.
Ein Fabrikmodell
Wir wissen, dass wir den folgenden Code verwenden können, um ein Objekt zu erstellen:
var user = new Object (); // Erstellen Sie ein Objekt mit dem neuen Bediener -Benutzer.name = 'rezitiert am Triangle Lake'; // Attribute zum Objekt Benutzer hinzufügen. // Return 'rezitiert auf dem Triangle Lake' Hubei Wuhan ''
Das Erstellen von Objekten auf diese Weise ist einfach und intuitiv und ist auch die grundlegendste Methode zum Erstellen von Objekten in JavaScript. Aber es gibt ein solches Problem, wenn wir mehrere Objekte erstellen müssen, muss ich viel doppelter Code schreiben. Wenn wir beispielsweise ein anderes Objektbenutzer erstellen möchten, müssen wir den obigen Code erneut umschreiben, was im tatsächlichen Entwicklungsprozess unangemessen ist. Auf diese Weise erhöht sich die Menge an Code, wenn es zu viele Objekte gibt, stark.
Um ein solches Problem zu lösen, können wir eine Methode namens Fabrikmuster verwenden, nämlich das Problem der Instanziierung von Objekten, die eine große Menge doppelter Code erzeugen.
Funktion create (Name, Alter) {var obj = new Object (); obj.name = name; obj.age = Alter; obj.run = function () {return this.name + '' + this.age; }; return obj;} var obj1 = create ('zxc', 10); // die erste Instanz var obj2 = create ('cxz', 20); // die zweite Instanzalarm (obj1.run ()); alarm (obj1.run ());Aus dem obigen Code können wir erkennen, dass das Werksmuster das Problem der groß angelegten Duplikation von Code während der Instanziierung löst, aber ein weiteres Problem entsteht, dh identifiziert, dass wir nicht herausfinden können, welches Objekt sie sind. Zum Beispiel
alarm (typeof obj1); // ObjectAlert (Obj1 -Instanz des Objekts); //WAHR
Der obige Code zeigt an, dass Box1 ein Objektobjekt ist, aber wir können nicht wissen, welches Objekt erstellt wurde.
Zwei Konstruktor (Konstruktionsmethode)
Um das obige Problem zu lösen, können wir Konstruktoren zum Erstellen von Objekten verwenden. Der einzige Unterschied zwischen einem Konstruktor und einer normalen Funktion besteht darin, dass die Aufrufmethode unterschiedlich ist. Der Konstruktor ist jedoch auch eine Funktion.
Funktion Benutzer (Name, Alter) {// Konstruktormodus this.name = name; this.age = Alter; this.run = function () {return this.name + '' + this.age; };}Verwenden Sie einfach den neuen Bediener beim Erstellen eines Objekts:
var user1 = neuer Benutzer ('ZXC', 25); var user2 = neuer Benutzer ('cxz', 22);Jetzt können wir erkennen, ob User1 oder User2 zum Benutzer gehört.
alert (user1instanceof user); // true
Es ist ersichtlich, dass die Verwendung der Konstruktormethode das Problem der wiederholten Instanziierung löst und auch das Problem der Objekterkennung löst.
Der Ausführungsprozess bei der Verwendung eines Konstruktors ist wie folgt:
1. Bei der Ausführung des neuen Konstruktors () führt der Hintergrund ein neues Objekt () aus;
2. Geben Sie den Konstruktor zum neuen Objekt.
3. Führen Sie den Code im Konstruktor aus;
4. Der Hintergrund gibt direkt das neue Objekt zurück.
Schauen wir uns als nächstes die Funktionsprobleme im Konstruktor an. Wenn wir die folgende Anweisung ausführen:
alert (user1.run == user2.run); // Das Ergebnis gibt false zurück
Das Ergebnis gibt False zurück, was bedeutet, dass die Methode tatsächlich eine Referenzadresse ist. Wenn wir wiederholt mehrere Objekte erstellen, öffnen die Methoden in jedem Objekt einen neuen Speicherplatz im Speicher, der mehr Platz verschwendet. Um dieses Problem zu lösen, müssen wir die Freigabe von Instanzeigenschaften oder -methoden verwenden. Wir werden weiterhin über die Lösung dieses Problems im nächsten Artikel diskutieren.
Das obige sind die Objekte und Prototypen in JavaScript, die Ihnen vom Editor (II) vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!