Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der drei grundlegenden Möglichkeiten zum Generieren von Objekten in js (Fabrikmodus, Konstruktormodus, Prototypmodus)
1. Factory-Muster
Factory-Muster ist ein bekanntes Entwurfsmuster im Bereich der Softwareentwicklung. Da in ECMAScript keine Klassen erstellt werden können, werden Funktionen verwendet, um Objekte mit bestimmten Schnittstellen zu kapseln. Die Implementierungsmethode ist sehr einfach: Erstellen Sie ein Objekt innerhalb der Funktion, weisen Sie dem Objekt Eigenschaften und Methoden zu und geben Sie dann das Objekt zurück.
function a(name){ var b = new object(); b.name = name; b.say = function(){ alert(this.name); } return b }
Die Funktion generiert intern das b-Objekt und gibt es zurück.
2. Konstruktormuster
function Person(name, url) { //注意构造函数名第一个字母大写 this.name = name; this.url = url; this.alertUrl = alertUrl; } function alertUrl() { alert(this.url); }
Denn jedes Mal, wenn ein Objekt erstellt wird, wird eine AlertUrl-Methode generiert, was eine Verschwendung ist Daher wird die Methode „alertUrl“ global geschrieben, um Platz zu sparen. Das Schreiben auf diese Weise verstößt jedoch gegen die ursprüngliche Absicht der objektorientierten Programmierung.
3. Prototyp-Muster
Jede Funktion, die wir erstellen, hat ein Prototyp-Attribut. Dieses Attribut ist ein Zeiger, der auf ein Objekt zeigt, und der Zweck dieses Objekts besteht darin, Informationen zu enthalten, die von verwendet werden können eine bestimmte Eigenschaften und Methoden, die von allen Instanzen eines Typs gemeinsam genutzt werden. Der Vorteil der Verwendung eines Prototypobjekts besteht darin, dass alle Objektinstanzen die darin enthaltenen Eigenschaften und Methoden gemeinsam nutzen können.
function Person(){ } Person.prototype.name = "bill"; Person.prototype.address = "GuangZhou"; Person.sayName = function (){ alert(this.name); } var person1 = new Person(); var person2 = new Person(); //测试代码 alert(person1.name); // bill alert(person2.name); // bill person1.sayName(); //bill person2.sayName(); //bill person1.name = "666"; alert(person1.name); // 666 alert(person2.name); // bill person1.sayName(); //666 person2.sayName(); //bill
Jede von uns erstellte Funktion verfügt über ein Prototypattribut, bei dem es sich tatsächlich um einen Zeiger handelt, der auf ein Objekt zeigt.
Wenn ein Personenobjekt wie Person1 erstellt wird, ist sein Standardnamensattribut bill. Wenn Sie den Namenswert ändern möchten, müssen Sie person1.name bearbeiten. Dadurch wird lediglich das Namensattribut dieses Objekts geändert. Alert(person1.prototype.name) zeigt immer noch eine Rechnung an, d. h. das Namensattribut für den Prototyp
Das Obige ist der gesamte Inhalt dieses Artikels. und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.
Ausführlichere Erläuterungen zu den drei grundlegenden Methoden zum Generieren von Objekten in js (Fabrikmodus, Konstruktormodus, Prototypmodus) finden Sie auf der chinesischen PHP-Website für verwandte Artikel!