Die Konstruktormethode ist sehr nützlich, aber es gibt eine Speicherverschwendung
Von Prototypen zugewiesene Funktionen werden von allen Objekten gemeinsam genutzt.
Von Prototypen zugewiesene Attribute sind unabhängig .----- Wenn Sie die Attribute nicht ändern, werden sie gemeinsam genutzt
Wenn wir möchten, dass alle Objekte dieselbe Funktion verwenden, ist es am besten, Funktionen mithilfe der Prototyp -Methode hinzuzufügen, die den Speicher speichert.
Beispiel:
// ---- Konstruktormodus
Fügen Sie dem Katzenobjekt ein unveränderliches Attribut "Typ" hinzu und fügen Sie dann eine Methode zu essen (essen Sie Ratten). Dann wird die Prototyp -Objektkatze Folgendes:
<Script> Funktion Cat (Name, Farbe) {this.name = name; this.color = color; this.type = "feat"; this.eat = function () {alert ("Eat Maus"); }; } // Beispiel erzeugen: var cat1 = new Cat ("Big Hair", "Yellow"); var cat2 = neue Katze ("Eat erhaar", "schwarz"); alarm (cat1.typ); // feat cat1.eat (); // Mauswarnung essen (Cat1.eat == Cat2.eat); // false </script>Das ist für jedes Instanzobjekt das Typ -Attribut und die Eat () -Methode genau den gleichen Inhalt. Jedes Mal, wenn eine Instanz generiert wird, muss sie wiederholt und mehr Speicher einnehmen. Dies ist weder umweltfreundlich noch effizient.
// ---- Prototyp-Modus
JavaScript sieht vor, dass jeder Konstruktor ein Prototypattribut auf ein anderes Objekt hat. Alle Eigenschaften und Methoden dieses Objekts werden durch Instanzen des Konstruktors vererbt.
Dies bedeutet, dass wir diese unveränderten Eigenschaften und Methoden im Prototypobjekt direkt definieren können.
<Script> Funktion Cat (Name, Farbe) {this.name = name; this.color = color; } Cat.prototype.type = "weiblich"; cat.prototype.eat = function () {alert ("Eat Maus")}; // generieren eine Instanz. var cat1 = neue Katze ("Big Hair", "Yellow"); var cat2 = neue Katze ("2 Haare", "schwarz"); alarm (cat1.typ); // Cat Cat1.eat (); // Mausalarm essen (Cat1.eat == Cat2.eat); // truef </script>Zu diesem Zeitpunkt sind die Typ -Attribute und Eat () -Methoden aller Instanzen tatsächlich eine Speicheradresse, die auf das Prototyp -Objekt hinweist und so die Betriebseffizienz verbessert.
Die obige Einführung in den Unterschied zwischen JS -Konstruktor und Prototypprototyp 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.