Heim Web-Frontend js-Tutorial Eine kurze Diskussion zur Realisierung objektorientierter Klassen in JavaScript_Grundkenntnisse

Eine kurze Diskussion zur Realisierung objektorientierter Klassen in JavaScript_Grundkenntnisse

May 16, 2016 pm 04:27 PM
javascript 面向对象

Ein Objekt ist alles, was Menschen studieren möchten, von den einfachsten ganzen Zahlen bis hin zu komplexen Flugzeugen. Sie können nicht nur bestimmte Dinge darstellen, sondern auch abstrakte Regeln, Pläne oder Ereignisse. --Zitiert aus der Baidu-Enzyklopädie

Objektorientierte Programmierung ist derzeit das beliebteste Programmiermodell. Frustrierend ist jedoch, dass JavaScript, die am weitesten verbreitete Front-End-Anwendung, keine objektorientierte Programmierung unterstützt.

JavaScript hat keine Zugriffskontrollzeichen, es verfügt nicht über das Schlüsselwort class zum Definieren einer Klasse, es unterstützt keine Erweiterung oder Doppelpunkt zur Vererbung und es verwendet kein Virtual zur Unterstützung virtueller Funktionen. Javascript ist jedoch flexibel Lassen Sie uns einen Blick darauf werfen, wie Javascript ohne das Schlüsselwort class die Klassendefinition implementiert und Objekte erstellt.

Definieren Sie eine Klasse und erstellen Sie ein Instanzobjekt der Klasse

In Javascript verwenden wir Funktionen zum Definieren von Klassen wie folgt:

Code kopieren Der Code lautet wie folgt:

Funktion Shape()
{
var x=1;
var y=2;
}

Man könnte sagen: Zweifel? Ist das nicht eine definierende Funktion? Ja, das ist eine Definitionsfunktion. Wir definieren eine Formfunktion und initialisieren x und y. Wenn Sie es jedoch aus einem anderen Blickwinkel betrachten, definieren Sie eine Shape-Klasse mit zwei Attributen x und y, und die Anfangswerte sind 1 bzw. 2. Das Schlüsselwort, das wir zum Definieren verwenden Klasse ist Funktion statt Klasse.

Dann können wir wie folgt ein Objekt aShape der Shape-Klasse erstellen:

Code kopieren Der Code lautet wie folgt:

var aShape = new Shape();

Definieren Sie öffentliche und private Eigenschaften

Wir haben ein Shape-Objekt erstellt, aber wenn wir versuchen, auf seine Eigenschaften zuzugreifen, tritt ein Fehler wie folgt auf:

Code kopieren Der Code lautet wie folgt:
aShape.x=1;

Dies zeigt, dass mit var definierte Eigenschaften privat sind. Wir müssen dieses Schlüsselwort verwenden, um öffentliche Eigenschaften zu definieren.

Code kopieren Der Code lautet wie folgt:
Funktion Shape()
{
This.x=1;
This.y=2;
}

Auf diese Weise können wir auf die Attribute von Shape zugreifen, wie zum Beispiel:

Code kopieren Der Code lautet wie folgt:
aShape.x=2;

Okay, wir können basierend auf dem obigen Code zusammenfassen: Verwenden Sie var, um die privaten Attribute der Klasse zu definieren, und verwenden Sie dies, um die öffentlichen Attribute der Klasse zu definieren.

Definieren Sie öffentliche und private Methoden

In Javascript ist eine Funktion eine Instanz der Function-Klasse. Daher ist eine Funktion auch ein Objekt. Daher können wir dies auch tun Weisen Sie einer Klasse eine Funktion zu. Dann kann diese Attributvariable als Methode bezeichnet werden, da es sich um eine ausführbare Funktion handelt. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:
Funktion Shape()
{
var x=0;
var y=1;
This.draw=function()
{
            //print;
};
}

Wir haben im obigen Code eine Zeichnung definiert und ihr eine Funktion zugewiesen. Als Nächstes können wir diese Funktion über aShape aufrufen, das in OOP als öffentliche Methode bezeichnet wird, wie zum Beispiel:

Code kopieren Der Code lautet wie folgt:
aShape.draw();

Wenn es mit var definiert wird, wird dieser Draw privat, was in OOP als private Methode bezeichnet wird, wie zum Beispiel:

Code kopieren Der Code lautet wie folgt:

Funktion Shape()
{
var x=0;
var y=1;
var draw=function()
{
            //print;
};
}

Auf diese Weise können Sie aShape.draw nicht zum Aufrufen dieser Funktion verwenden.

Konstrukteur

Javascript unterstützt kein OOP und natürlich gibt es keinen Konstruktor. Wir können jedoch selbst einen Konstruktor simulieren und ihn beim Erstellen des Objekts automatisch aufrufen lassen. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

Funktion Shape()
{
var init = function()
{
//Konstruktorcode
};
init();
}

Am Ende von Shape haben wir die Funktion init künstlich aufgerufen. Wenn dann ein Shape-Objekt erstellt wird, wird init immer automatisch aufgerufen und unser Konstruktor kann simuliert werden.

Konstruktor mit Parametern

Wie bringt man den Konstruktor dazu, Parameter anzunehmen? Tatsächlich ist es sehr einfach, die zu übergebenden Parameter in die Parameterliste der Funktion zu schreiben, z. B.:

Code kopieren Der Code lautet wie folgt:

Funktion Shape(ax,ay)
{
var x=0;
var y=0;
var init = function()
{
//Konstruktor
         x=ax;
y=ay;
};
init();
}

Auf diese Weise können wir Objekte wie dieses erstellen:

Code kopieren Der Code lautet wie folgt:

var aShape = new Shape(0,1);

Statische Eigenschaften und statische Methoden

Wie definiere ich statische Eigenschaften und Methoden in Javascript? Wie unten gezeigt:

Code kopieren Der Code lautet wie folgt:
Funktion Shape(ax,ay)
{
var x=0;
var y=0;
var init = function()
{
//Konstruktor
         x=ax;
y=ay;
};
init();
}
Shape.count=0; //Definieren Sie eine statische Attributanzahl. Dieses Attribut gehört zur Klasse, nicht zum Objekt.
Shape.staticMethod=function(){};//Definieren Sie eine statische Methode

Mit statischen Eigenschaften und Methoden können wir wie folgt über den Klassennamen darauf zugreifen:

Code kopieren Der Code lautet wie folgt:
Warnung ( aShape.count );
aShape.staticMethod();

Hinweis: Statische Eigenschaften und Methoden sind öffentlich. Bisher weiß ich nicht, wie ich statische Eigenschaften und Methoden privat machen kann
Greifen Sie in Methoden auf die öffentlichen und privaten Eigenschaften dieser Klasse zu

Zugriff auf Ihre eigenen Eigenschaften in der Klassenmethode. Javascript verfügt über verschiedene Zugriffsmethoden für öffentliche Eigenschaften und private Eigenschaften. Bitte sehen Sie sich den folgenden Code an:

Code kopieren Der Code lautet wie folgt:

Funktion Shape(ax,ay)
{
var x=0;
var y=0;
This.gx=0;
This.gy=0;
var init = function()
{
           x=ax;//Um auf private Eigenschaften zuzugreifen, schreiben Sie einfach den Variablennamen direkt
y=ay;
This.gx=ax;//Um auf öffentliche Eigenschaften zuzugreifen, müssen Sie this.
vor dem Variablennamen hinzufügen This.gy=ay;
};
init();
}

Hinweise dazu

Nach der Erfahrung des Autors verweist dies in der Klasse nicht immer auf unser Objekt selbst. Der Hauptgrund dafür ist, dass Javascript keine OOP-Sprache ist. Darüber hinaus werden Funktionen und Klassen mit Funktionen definiert, was natürlich zu einigen führt kleinere Probleme.

Die Situation, in der dieser Zeiger auf einen Fehler hinweist, liegt normalerweise in der Ereignisverarbeitung vor. Wir möchten, dass die Mitgliedsfunktion auf ein Ereignis reagiert this Der Zeiger ist nicht mehr unser eigenes Objekt. Der Aufruf dieser Funktion in der Member-Funktion führt natürlich zu einem Fehler.

Die Lösung besteht darin, dass wir dies zu Beginn der Klassendefinition in einem privaten Attribut speichern. In Zukunft können wir dieses Attribut verwenden, um dies zu ersetzen. Ich verwende diese Methode, um diesen Zeiger zu verwenden, was ziemlich sicher und sorgenfrei ist~

Ändern wir den Code, um dieses Problem zu lösen. Vergleichen Sie den Code in Teil 6 und Sie werden verstehen:

Code kopieren Der Code lautet wie folgt:

Funktion Shape(ax,ay)
{
var _this=this; //Speichern Sie dies und ersetzen Sie dies in Zukunft durch _this, damit Sie dadurch nicht verwirrt werden
var x=0;
var y=0;
_this.gx=0;
_this.gy=0;
var init = function()
{
           x=ax;//Um auf private Eigenschaften zuzugreifen, schreiben Sie einfach den Variablennamen direkt
y=ay;
​​​​ _this.gx=ax;//Um auf öffentliche Eigenschaften zuzugreifen, müssen Sie this.
vor dem Variablennamen hinzufügen ​​​​ _this.gy=ay;
};
init();
}

Oben haben wir darüber gesprochen, wie man Klassen in Javascript definiert, Objekte von Klassen erstellt, öffentliche und private Eigenschaften und Methoden erstellt, statische Eigenschaften und Methoden erstellt, Konstruktoren simuliert und die Fehleranfälligkeit besprochen.

Das ist alles, was wir über die OOP-Implementierung in Javascript sagen. Das Obige ist der praktischste Inhalt. Im Allgemeinen wird Javascript zum Definieren von Klassen verwendet und der obige Code reicht aus, um Objekte zu erstellen. Natürlich können Sie auch Mootools oder Prototypen verwenden, um Klassen zu definieren und Objekte zu erstellen. Ich habe das Mootools-Framework verwendet und finde es sehr gut. Es verfügt über eine umfassendere Javascript-Klassensimulation und unterstützt die Klassenvererbung. Wenn Sie ein Framework verwenden, müssen Sie natürlich die relevanten js-Header-Dateien in Ihre Webseite einbinden, daher hoffe ich immer noch, dass Leser Klassen ohne Framework erstellen können. Auf diese Weise ist der Code effizienter, und Sie können dies auch tun Sehen Sie, es ist nicht mühsam, eine einfache Klasse zu erstellen~

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Entdecken Sie die objektorientierte Programmierung in Go Entdecken Sie die objektorientierte Programmierung in Go Apr 04, 2024 am 10:39 AM

Die Go-Sprache unterstützt die objektorientierte Programmierung durch Typdefinition und Methodenzuordnung. Es unterstützt keine traditionelle Vererbung, sondern wird durch Komposition implementiert. Schnittstellen sorgen für Konsistenz zwischen Typen und ermöglichen die Definition abstrakter Methoden. Praxisbeispiele zeigen, wie OOP zum Verwalten von Kundeninformationen verwendet wird, einschließlich Vorgängen zum Erstellen, Abrufen, Aktualisieren und Löschen von Kunden.

Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Jun 05, 2024 pm 09:39 PM

Zu den OOP-Best Practices in PHP gehören Namenskonventionen, Schnittstellen und abstrakte Klassen, Vererbung und Polymorphismus sowie Abhängigkeitsinjektion. Zu den praktischen Fällen gehören: Verwenden des Lagermodus zum Verwalten von Daten und Verwenden des Strategiemodus zum Implementieren der Sortierung.

Gibt es in Golang klassenähnliche objektorientierte Funktionen? Gibt es in Golang klassenähnliche objektorientierte Funktionen? Mar 19, 2024 pm 02:51 PM

In Golang (Go-Sprache) gibt es kein Konzept einer Klasse im herkömmlichen Sinne, es stellt jedoch einen Datentyp namens Struktur bereit, durch den objektorientierte Funktionen ähnlich wie Klassen erreicht werden können. In diesem Artikel erklären wir, wie Strukturen zur Implementierung objektorientierter Funktionen verwendet werden, und stellen konkrete Codebeispiele bereit. Definition und Verwendung von Strukturen Werfen wir zunächst einen Blick auf die Definition und Verwendung von Strukturen. In Golang können Strukturen über das Schlüsselwort type definiert und dann bei Bedarf verwendet werden. Strukturen können Attribute enthalten

Analyse der objektorientierten Funktionen der Go-Sprache Analyse der objektorientierten Funktionen der Go-Sprache Apr 04, 2024 am 11:18 AM

Die Go-Sprache unterstützt objektorientierte Programmierung, definiert Objekte über Strukturen, definiert Methoden mithilfe von Zeigerempfängern und implementiert Polymorphismus über Schnittstellen. Objektorientierte Funktionen ermöglichen die Wiederverwendung, Wartbarkeit und Kapselung von Code in der Go-Sprache, es gibt jedoch auch Einschränkungen wie das Fehlen traditioneller Konzepte von Klassen und Vererbung sowie Methodensignaturumwandlungen.

„Einführung in die objektorientierte Programmierung in PHP: Vom Konzept zur Praxis' „Einführung in die objektorientierte Programmierung in PHP: Vom Konzept zur Praxis' Feb 25, 2024 pm 09:04 PM

Was ist objektorientierte Programmierung? Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das reale Entitäten in Klassen abstrahiert und Objekte zur Darstellung dieser Entitäten verwendet. Klassen definieren die Eigenschaften und das Verhalten von Objekten und Objekte instanziieren Klassen. Der Hauptvorteil von OOP besteht darin, dass Code einfacher zu verstehen, zu warten und wiederzuverwenden ist. Grundkonzepte von OOP Zu den Hauptkonzepten von OOP gehören Klassen, Objekte, Eigenschaften und Methoden. Eine Klasse ist der Bauplan eines Objekts, der seine Eigenschaften und sein Verhalten definiert. Ein Objekt ist eine Instanz einer Klasse und verfügt über alle Eigenschaften und Verhaltensweisen der Klasse. Eigenschaften sind Merkmale eines Objekts, das Daten speichern kann. Methoden sind Funktionen eines Objekts, die mit den Daten des Objekts arbeiten können. Vorteile von OOP Zu den Hauptvorteilen von OOP gehören: Wiederverwendbarkeit: OOP kann den Code erweitern

Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Jun 05, 2024 pm 08:50 PM

Indem Sie das Verfolgen des Objektstatus, das Setzen von Haltepunkten, das Verfolgen von Ausnahmen und die Verwendung der xdebug-Erweiterung beherrschen, können Sie objektorientierten PHP-Programmiercode effektiv debuggen. 1. Objektstatus verfolgen: Verwenden Sie var_dump() und print_r(), um Objektattribute und Methodenwerte anzuzeigen. 2. Legen Sie einen Haltepunkt fest: Legen Sie einen Haltepunkt in der Entwicklungsumgebung fest. Wenn die Ausführung den Haltepunkt erreicht, wird der Debugger angehalten, sodass der Objektstatus einfacher überprüft werden kann. 3. Ausnahmen verfolgen: Verwenden Sie Try-Catch-Blöcke und getTraceAsString(), um den Stack-Trace und die Meldung abzurufen, wenn die Ausnahme auftritt. 4. Verwenden Sie den Debugger: Die Funktion xdebug_var_dump() kann den Inhalt von Variablen während der Codeausführung überprüfen.

Vertieftes Verständnis der objektorientierten PHP-Programmierung: Interaktion zwischen Klassen und Objekten Vertieftes Verständnis der objektorientierten PHP-Programmierung: Interaktion zwischen Klassen und Objekten Jun 01, 2024 am 11:20 AM

Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das Daten und Verhalten in Objekten kapselt, um reale Entitäten darzustellen. In PHP ermöglicht OOP die Erstellung von Klassen und Objekten, um Entitäten in der realen Welt darzustellen: Klassen: Definieren Sie die Daten (Eigenschaften) und Operationen (Methoden) des Objekts. Objekt: Eine Instanz einer Klasse, die die Eigenschaften und Methoden der Klasse enthält und mit anderen Objekten interagieren kann. OOP-Praxisfall: Der Warenkorb enthält eine Reihe von Produkten, modelliert durch die folgenden zwei Klassen: Produkt: stellt ein einzelnes Produkt mit Name und Preis dar. Warenkorb: Stellt einen Warenkorb dar, der eine Produktliste enthält und Methoden zum Hinzufügen von Produkten und Berechnen des Gesamtpreises bereitstellt.

Umkehrung der Kontrolle in Go: die Flexibilität der objektorientierten Programmierung Umkehrung der Kontrolle in Go: die Flexibilität der objektorientierten Programmierung Apr 08, 2024 am 09:21 AM

Die Umkehrung der Kontrolle in der Go-Sprache bietet Flexibilität für die objektorientierte Programmierung durch die Trennung von Objekterstellung und Abhängigkeitsinjektion: IoC-Grundprinzip: Externe Container oder Frameworks verwalten die Objekterstellung und -injektion, und Objekte instanziieren andere Objekte nicht mehr direkt. Abhängigkeitsinjektion: Abhängigkeiten werden als Parameter an Objekte übergeben, wodurch das Objekt für einfaches Testen und Wiederverwenden unabhängig von seinen Abhängigkeiten wird. IoC-Container: Wird zur Verwaltung der Objekterstellung und -injektion verwendet. In der Go-Sprache stehen viele vorgefertigte Container zur Auswahl, z. B. Wire und Go-Wire. Vorteile: Verbesserung der Testbarkeit, Verbesserung der Wartbarkeit, Bereitstellung von Flexibilität, lose Kopplung von Abhängigkeiten zwischen Objekten.

See all articles