Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der drei grundlegenden Möglichkeiten zum Generieren von Objekten in js (Fabrikmodus, Konstruktormodus, Prototypmodus)

Detaillierte Erläuterung der drei grundlegenden Möglichkeiten zum Generieren von Objekten in js (Fabrikmodus, Konstruktormodus, Prototypmodus)

高洛峰
高洛峰Original
2017-01-10 12:18:211096Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn