


Ausführliche Erklärung, wie man Klasseninstanzen in JavaScript durch Funktionen definiert
Veranschaulichen Sie zunächst anhand eines Beispiels:
function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID: " + this.ID + ", Name: " + this.Name); } } var obj1 = new myClass(); var obj2 = new myClass();
Die Definition der Funktion entspricht tatsächlich dem Konstruktor der Klasse, und die letzten beiden Sätze dienen dazu, eine Instanz davon zu erstellen Klasse. Analysieren wir zunächst den ersten Satz: var obj1 = new myClass(); Wenn new zum Erstellen einer Instanz einer Klasse verwendet wird, erstellt der Interpreter zunächst ein leeres Objekt. Führen Sie dann diese myClass-Funktion aus und zeigen Sie diesen Zeiger auf eine Instanz dieser Klasse. Wenn Sie auf this.ID = id; und this.showMessage = function(){...} stoßen, werden diese beiden Eigenschaften und diese Methode erstellt und die Variablen id und name werden definiert Diesen beiden Eigenschaften und diesem Funktionsobjekt (shwoMessage) wird die Funktion auf Wertebene zugewiesen. Dieser Vorgang entspricht der Initialisierung des Objekts, ähnlich dem Konstruktor in C#. Schließlich gibt new dieses Objekt zurück. Schauen Sie sich den zweiten Satz an: var obj2 = new myClass(); Der Ausführungsprozess ist der gleiche wie im vorherigen Satz, d. h. es wird ein leeres Objekt erstellt, dann wird die Funktion myClass ausgeführt und zwei Eigenschaften und eine Methode definiert.
Wie aus der obigen Analyse ersichtlich ist, besteht die obige Art der Implementierung einer Klasse darin, die Attributmethoden der Klasse in der Definition der Funktion zu definieren. Es gibt Nachteile. Wenn zwei oder mehr Instanzen dieser Klasse erstellt werden müssen, wie oben gezeigt, werden diese Eigenschaften mehrmals erstellt.
Wie kann man diese Situation vermeiden? Prototyp ist wie sein Name ein Prototyp, der tatsächlich die Sammlung von Mitgliedern dieses Funktionsobjekts darstellt. Wir können sagen, dass Prototyp tatsächlich die Sammlung einer Klasse ist der Mitglieder. Die vom Prototyp definierten Eigenschaften und Methoden werden ausgeführt, bevor der Konstruktor der Funktion ausgeführt wird. Bevor ein Objekt also neu ist, wurden die Mitglieder des Prototyps tatsächlich ausgeführt. Schauen wir uns zunächst ein Beispiel an: Die Struktur der Klasse
function myClass() { //构造函数 } myClass.prototype = { ID: 1, Name: "johnson", showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name); } } var obj1 = new myClass(); var obj2 = new myClass();
ist immer noch dieselbe wie im vorherigen Beispiel, wird hier jedoch mithilfe eines Prototyps implementiert. Schauen wir uns zunächst die letzten beiden Sätze an. Prototyp wird vor der Ausführung des Funktionskonstruktors ausgeführt, d. h. bevor var obj1 = new myClass(); ausgeführt wird, verfügt diese Klasse bereits über eine ID, ein Name-Attribut und eine showMessage-Methode. Wenn der Ausführende einen Satz schreibt, läuft der Ausführungsprozess wie folgt ab: Beachten Sie den Vergleich mit dem vorherigen Beispiel: Erstellen Sie zunächst ein leeres Objekt und zeigen Sie mit dem Zeiger auf dieses Objekt. Weisen Sie dann diesem Objekt alle Mitglieder des Prototypobjekts der Funktion zu (beachten Sie, dass diese Mitglieder nicht erneut erstellt werden). Führen Sie dann den Funktionskörper aus. Schließlich gibt new dieses Objekt zurück. Beim Ausführen des nächsten Satzes: Dieser Prozess wird ebenfalls ausgeführt und diese Mitglieder werden nicht wiederholt erstellt.
Der obige Code ist nur ein Beispiel. In tatsächlichen Projekten gibt es möglicherweise eine große Anzahl von Mitgliedern in der Klasse und es muss möglicherweise eine große Anzahl von Instanzen erstellt werden. Dieser Prototyp wird seine Überlegenheit zeigen. Darüber hinaus verwendet der obige Code die Klammersyntax, um Mitglieder des Prototyps zu definieren, sodass der Code klarer aussieht. Dies ist ein empfohlenes Klassenentwurfsmuster. Natürlich werden wir in vielen Projekten auch bessere Modelle für die JavaScript-Programmierung finden und hoffen, dass mit der Zeit auch alle gängigen Browser die JavaScript-Analyse vereinheitlichen .
Wie oben erwähnt, treten die vom Prototyp definierten Elemente vor dem Konstruktor auf. Es kann bewiesen werden, dass der Konstruktor leer ist. Fügen Sie dem Konstruktor eine Warnung hinzu var obj1 = new myClass(); wird ein Popup-Dialogfeld mit den korrekten Attributwerten angezeigt.
Der folgende Code:
function subClass(){ } subClass.prototype = { Name: "sub" } function myClass() { //构造函数 } myClass.prototype = { ID: 1, Name: "johnson", SubObj: new subClass(), showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name + "SubObj.Name:" + this.SubObj.Name); } } var obj1 = new myClass(); obj1.SubObj.Name = "XXX"; obj1.showMessage(); var obj2 = new myClass(); obj2.showMessage();
Hier wird ein Referenztyp in myClass definiert, sein Typ ist eine von uns angepasste Unterklassenklasse und es gibt ein Name-Attribut in dieser Unterklasse. Da das Prototypobjekt laut unserer obigen Analyse gemeinsam genutzt wird: Bei der Ausführung von var obj1 = new myClass(); werden die Mitglieder des Prototyps von myClass in diese obj1-Instanz kopiert. Aber SubObj ist hier ein Referenztyp. Wenn var obj2 = new myClass(); ausgeführt wird, werden die ID- und Name-Mitglieder im Prototyp nach obj2 kopiert, aber das SubObj-Attribut wird nicht kopiert, sondern verweist auf den Prototyp. SubObj. Da der vorherige Satz den Wert von obj1.Subobj.Name geändert hat, wird bei Verwendung von new zum Generieren einer obj2-Instanz auf den geänderten Wert verwiesen.
Wenn Sie also einen Prototyp zum Definieren einer Klasse verwenden, müssen Sie weiterhin die Attribute im Konstruktor und die Methoden im Prototyp des Konstruktors definieren. Wie folgt:
function myClass(id, name) { this.ID = id; this.Name = name; } myClass.prototype = { showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name); }, showMessage2: function() { alert("Method2"); } } var obj1 = new myClass(1, "johnson"); obj1.showMessage(); obj1.Name="John"; obj1.showMessage(); var obj2 = new myClass(2, "Amanda"); obj2.showMessage();
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man Klasseninstanzen in JavaScript durch Funktionen definiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

Der zusammengesetzte Primärschlüssel in MySQL bezieht sich auf den Primärschlüssel, der aus mehreren Feldern in der Tabelle besteht und zur eindeutigen Identifizierung jedes Datensatzes verwendet wird. Im Gegensatz zu einem einzelnen Primärschlüssel wird ein zusammengesetzter Primärschlüssel durch die Kombination der Werte mehrerer Felder gebildet. Beim Erstellen einer Tabelle können Sie einen zusammengesetzten Primärschlüssel definieren, indem Sie mehrere Felder als Primärschlüssel angeben. Um die Definition und Funktion zusammengesetzter Primärschlüssel zu demonstrieren, erstellen wir zunächst eine Tabelle mit dem Namen „users“, die drei Felder enthält: id, username und email, wobei id ein automatisch inkrementierender Primärschlüssel und user ist

„Discuz erkunden: Definition, Funktionen und Codebeispiele“ Mit der rasanten Entwicklung des Internets sind Community-Foren zu einer wichtigen Plattform für Menschen geworden, um Informationen zu erhalten und Meinungen auszutauschen. Unter den vielen Community-Forumsystemen wird Discuz als bekannte Open-Source-Forumsoftware in China von der Mehrheit der Website-Entwickler und -Administratoren bevorzugt. Was ist Discuz? Welche Funktionen hat es und wie kann es unserer Website helfen? In diesem Artikel wird Discuz ausführlich vorgestellt und spezifische Codebeispiele beigefügt, damit die Leser mehr darüber erfahren können.

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Einführung in die PHP-Schnittstelle und wie sie definiert ist. PHP ist eine in der Webentwicklung weit verbreitete Open-Source-Skriptsprache. Sie ist flexibel, einfach und leistungsstark. In PHP ist eine Schnittstelle ein Werkzeug, das gemeinsame Methoden zwischen mehreren Klassen definiert, um Polymorphismus zu erreichen und Code flexibler und wiederverwendbar zu machen. In diesem Artikel werden das Konzept von PHP-Schnittstellen und deren Definition vorgestellt und spezifische Codebeispiele zur Veranschaulichung ihrer Verwendung bereitgestellt. 1. PHP-Schnittstellenkonzept Die Schnittstelle spielt eine wichtige Rolle in der objektorientierten Programmierung und definiert die Klassenanwendung

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

Die Beziehung zwischen js und vue: 1. JS als Eckpfeiler der Webentwicklung; 2. Der Aufstieg von Vue.js als Front-End-Framework; 3. Die komplementäre Beziehung zwischen JS und Vue; Vue.

Was sind Zeichen in voller Breite? In Computerkodierungssystemen sind Zeichen doppelter Breite eine Zeichenkodierungsmethode, die zwei Standardzeichenpositionen einnimmt. Dementsprechend wird die Zeichenkodierungsmethode, die eine Standardzeichenposition einnimmt, als Zeichen halber Breite bezeichnet. Zeichen in voller Breite werden normalerweise für die Eingabe, Anzeige und den Druck von chinesischen, japanischen, koreanischen und anderen asiatischen Zeichen verwendet. Bei chinesischen Eingabemethoden und der Textbearbeitung sind die Verwendungsszenarien von Zeichen voller Breite und Zeichen halber Breite unterschiedlich. Verwendung von Zeichen in voller Breite Chinesische Eingabemethode: Bei der chinesischen Eingabemethode werden normalerweise Zeichen in voller Breite verwendet, um chinesische Zeichen einzugeben, z. B. chinesische Schriftzeichen, Symbole usw.
