Es gibt mehrere Modi in JS, die Objekte erstellen und die im Objekt enthaltenen Eigenschaften und Methoden bedienen können.
Im Allgemeinen ist der erste Buchstabe des Konstruktionsnamens ein Großbuchstaben, und der erste Buchstabe des Namens Nicht-Konstruktor-Namen ist ein Kleinbuchstaben. Natürlich ist der einzige Unterschied zwischen einem Konstruktor und einer allgemeinen Funktion der Unterschied in Bezug auf die Aufrufweise. Solange jede Funktion durch neu aufgerufen wird, kann sie als Konstruktor verwendet werden. Wenn es nicht durch neu gerufen wird, ist es eine allgemeine Funktion.
Lassen Sie mich über mein Verständnis dieser Muster sprechen:
Werksmodus: Erstellen Sie eine allgemeine Funktion, erstellen Sie ein Objektobjekt in der Funktion, fügen Sie dem Objekt Attribute und Methoden hinzu, weisen Sie seinen Wert und geben Sie schließlich das Objekt zurück. Der Objekttyp kann nicht erkannt werden.
Konstruktormodus: Erstellen Sie einen Konstruktor, verwenden Sie diese, um Werte zuzuweisen, und wenn eine Instanz erstellt wird, wird die Methode einmal erstellt, und jede Methode führt denselben Befehl aus, der überflüssig ist. Dieser Nachteil kann erfolgen, indem die Methode in die globale Umgebung eingebaut wird, aber auf diese Weise gibt es keine Kapselung. Es kann jedoch über den Prototypmodus gelöst werden.
Prototyp -Muster: Jede Funktion hat eine Prototyp -Eigenschaft, die ein Zeiger ist und auf ein Objekt zeigt, das Eigenschaften und Methoden enthält, die von allen durch ihre Funktion erstellten Instanzen geteilt werden.
Die Beziehung zwischen Prototypobjekten, Konstruktoren und Instanzen ist wie folgt:
Abbildung: 1: Der Konstruktor und die vom Konstruktor erstellten Instanzen verweisen auf das Prototypobjekt des Konstruktors.
2: Das Prototypobjekt des Konstruktors hat das Konstruktorattribut, das auf den Konstruktor verweist.
3: Alle im Prototypobjekt des Konstruktors enthaltenen Eigenschaften und Methoden können von allen vom Konstruktor erstellten Instanzen gemeinsam genutzt werden.
Nach dem Umschreiben des Prototyp -Objekts unter Verwendung des Objektliterales zeigt der Konstruktor auf den Objektkonstruktor. Wenn es verpflichtet ist, auf einen anderen Konstruktor zu verweisen, müssen Sie den Wert des Konstruktorattributs des Prototyp -Objekts wie: Konstruktor: Person ändern. Auf diese Weise weist auch der Konstruktor des Prototyps -Objekts immer noch auf den Personkonstruktor hin, selbst wenn das Prototyp -Objekt des Personen umgeschrieben wird.
Wenn Sie zuerst eine Instanz erstellen: Wenn Sie direkt Eigenschaften oder Methoden hinzufügen, kann auf die Instanz zugegriffen werden.
Wenn das Prototyp -Objekt umgeschrieben wird, weist der Prototyp des Konstruktors auf das neue Prototyp -Objekt hin, während der Prototyp der zuvor erstellten Instanz auf das ursprüngliche Prototyp -Objekt weiterhin auf die neuen Eigenschaften oder neuen Methoden des neuen Prototyp -Objekts zugreifen kann.
Das Prototyp -Objekt enthält gemeinsame Eigenschaften und Methoden, sodass jede Instanz diese Informationen enthält, sodass es keinen Unterschied zwischen Instanzen gibt und Parameter können nicht übergeben werden, was nicht das ist, was wir wollen. Jede Instanz enthält gemeinsame Informationen und unterschiedliche Informationen, sodass wir eine Kombination aus Konstruktormodus und Prototypenmodus verwenden können.
Verwenden Sie eine Kombination aus Konstruktormodus und Prototypenmodus:
Statusprototypmuster: Kombinieren Sie unabhängige Konstruktoren mit ihren Prototypobjekten, initialisieren Sie den Prototyp im Konstruktor und fügen Sie ihm Methoden hinzu.
Wenn die Methode nicht vorhanden ist, wird es dem Prototypobjekt hinzugefügt und nur dann ausgeführt, wenn der Prototyp initialisiert wird, und nur einmal.
Parasitärer Konstruktormodus: Ähnlich wie der Fabrikmodus ist der Unterschied: Der parasitäre Konstruktormodus ist ein Konstruktor, und Instanzen werden durch Neue erstellt.
Stabiles Konstruktormuster: Es gibt keine öffentlichen Eigenschaften, und seine Methoden beziehen sich nicht auf dieses Objekt. Bei der Erstellung einer Instanz wird kein Neues verwendet. Nur der Zugriff auf Eigenschaften (d. H. Eingehende Daten) erfolgt durch Methoden.
Die obige Einführung in mehrere Modi von JavaScript -Erstellungsobjekten ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.