-
Da du nun etwas Javascript verstehst, möchte ich dir eine coole Art der Programmierung zeigen
-
Etwas, das wir "objektorientierte Programmierung" nennen.
-
Zuerst müssen wir aber den Vorteil davon verstehen
-
Also habe ich ein Programm erstellt, das objektorientiert viel einfacher wird
-
Es ist ein sehr cooles Programm. Oben hat es zwei Variablen, in denen einfache Objektliterale gespeichert sind.
-
Das Objektliteral ist eine Art Objekt welches wir mit zwei geschweiften Klammern erstellen
-
und dann schreiben wir alle Eigenschaftsnamen und Werte hinein.
-
Wir haben also zwei dieser Objektliteralvariablen, und hier unten die Funktion drawWinston,
-
die ein einziges Argument erwartet,
-
und es dann zeichnet, sie zeichnet ein Bild basierend auf den x und y Eigenschaften des Objekts
-
und dann eine Beschriftung basierend auf den Eigenschaften nickname und age des Objekts
-
Und jetzt endlich hier unten, rufen wir drawWinston() für den Teenager und den Adult auf,
-
und das ist es, was angezeigt wird.
-
Ziemlich cool. Wenn wir uns jetzt diese Objektliterale ansehen,
-
fällt uns auf, dass sie sich sehr ähnlich sehen.
-
Beide haben die gleichen Eigenschaften und können von der gleichen Funktion drawWinston() verwendet werden.
-
Wenn du dir das überlegst, beschreiben tatsächlich beide einen Typ von Winston, korrekt?
-
Stell dir vor, dass es eine Art abstrakten Typ von Winston in der Welt gibt,
-
jeder Winston hat die gleichen Eigenschaften wie einen Spitznamen, ein Alter, ein X und ein Y.
-
Hier haben wir gerade zwei Instanzen eines Winstons erstellt um einen bestimmten Winston zu beschreiben
-
. Dies ist also ein jugendlicher Winston und dies ist ein erwachsener Winston.
-
Aber sie sind sich wirklich sehr ähnlich und es gibt eine Menge Dinge, die sie gemeinsam haben.
-
Wenn man darüber nachdenkt, funktioniert die Welt auch so: Wir haben abstrakte Datentypen wie Menschen und Leute
-
wir alle sind nur spezielle Instanzen dieser Typen mit unseren eigenen kleinen Eigenschaften.
-
Jetzt können wir objektorientierte Techniken in Javascript verwenden, so dass diese Winston Variablen
-
Instanzen eines Winston-Objekts sind und so wissen, dass sie diese Dinge gemeinsam haben.
-
Dafür müssen wir als erstes diesen abstrakten Datentyp Winston beschreiben
-
Und das tun wir, indem wir eine Variable erstellen
-
Du willst den Datentyp in einer Variablen speichern. Also var Winston, und wir schreiben ein grosses W, weil wir unsere Objekttypen immer mit einem Grossbuchstaben beginnen,
-
und wir setzen sie gleich mit einer Funktion.
-
Diese Funktion ist eine spezielle Funktion, die wir "Konstruktor" nennen
-
sie wird jedes Mal aufgerufen, wenn wir eine neue Winston-Instanz erstellen.
-
Wenn wir einen Teenage-Winston erstellen wollen, rufen wir diese Funktion auf, auch für einen Adult-Winston, rufen diese Funktion auf.
-
Das bedeutet, dass diese Funktion alle Argumente erhalten sollte, die sie braucht, um einen vollständigen Winston zu erstellen.
-
In diesem Fall braucht sie also einen nickname, ein age, ein x und ein y.
-
Sobald wir diese Argumente erhalten haben, müssen wir etwas mit ihnen machen,
-
also müssen wir diese Informationen an das Winston-Objekt anhängen.
-
Dazu verwenden wir ein neues spezielles Schlüsselwort, genannt "this", welches sich auf die aktuelle Objektinstanz bezieht.
-
Wir sagen also this.nickname, was bedeutet, dass die Eigenschaft Nickname dieses Objekts gleich ist mit
-
was auch immer dem Konstruktor übergeben wird, okay?
-
Und this.age ist gleich dem Age, das übergeben wird, this.x ist gleich dem x und this.y
-
ist gleich dem y, das übergeben wird.
-
Jetzt haben wir einen abstrakten Datentyp Winston, der einen Konstruktor hat, mit dem wir einen neuen Winston erstellen können.
-
Also versuchen wir nun, ihn zu benutzen!
-
Wir werden wieder winstonTeen erstellen, aber dieses Mal sagen wir winstonTeen gleich,
-
und anstelle der geschweiften Klammern sagen wir "equals new Winston".
-
Wir sagen also: "Wir versuchen, eine neue Winson-Instanz zu erstellen".
-
und dann geben wir die Informationen ein, die er braucht, also "Winsteen", 15, 20, 50, okay?
-
Und nun können wir die alte Instanz löschen, weil wir sie nicht mehr brauchen.
-
Alles klar? Jetzt haben wir einen neuen Winsteen erstellt.
-
Und wir können sagen winstonAdult = new Winston()
-
und natürlich ist sein Name "Mr. Winst-a-lot", ein süsser Name.
-
Er ist 30, und ist bei 229 und 50. Alles klar? Gut, dann können wir dieses Objektliteral löschen.
-
Und, tada! Unser Code funktioniert immer noch.
-
Was wir hier also gemacht haben, ist, dass wir gesagt haben, okay, es gibt diesen abstrakten Typ von Daten, nämlich diesen Winston
-
und wir können neue Winston Instanzen erstellen, die diese Eigenschaften haben, die einzigartig für sie sind
-
Und wir speichern einfach diese Eigenschaften darin
-
Und das Speichern ist wirklich wichtig. Du weisst, dass wir hier den Nickname und Age haben.
-
Wenn wir versehentlich, this.age nicht hätten, würde jetzt "undefined" stehen.
-
Das liegt daran, dass diese Funktion drawWinston() hier unten,
-
erwartet, dass jedes Objekt, das ihr übergeben wird, eine Eigenschaft age hat.
-
Und wenn wir nicht this.age gesagt haben,
-
dann gibt es keine Eigenschaft age. Wir haben es an den Konstruktor übergeben
-
aber dann nichts damit gemacht, wir müssen es tatsächlich mit dem Schlüsselwort "this" an das Objekt anhängen.
-
Also fügen wir dies wieder hinzu
-
Jetzt denkst du vielleicht, okay, du hast deinen Code zum Laufen gebracht und machst diese schicken Dinge,
-
Aber, all das ergibt ja immer noch das gleiche, was wir vorher hatten.
-
Aber das coole ist, dass nun alle unsere Winstons durch den gleichen Konstruktor gehen
-
Wenn wir also wollen, können wir einige Dinge für alle Winstons auf einmal ändern
-
einfach hier drin. Also vielleicht das Alter, wir wollen eigentlich "Years old" sagen.
-
Wir können das einfach hier einfügen, und jetzt sagen alle unsere Winstons "15 Years old", "30 Years old", cool!
-
Sie haben also Dinge die einzigartig an ihnen sind, aber dann haben Gemeinsamkeiten
-
Und das ist eine wirklich coole Sache an objektorientierter Programmierung, diese Idee,
-
dass es diese Art von Objekten in der Welt gibt, und dass man Instanzen dieser Objekte erstellen kann
-
und es gibt einige Dinge die ähnlich sind, wie zum Beispiel, dass sie alle die gleichen Eigenschaften haben,
-
Dann gibt es Dinge, die sich unterscheiden, wie z.B. dass diese Eigenschaft einen anderen Wert hat als diese andere Eigenschaft
-
Aber dann, können wir das gleiche Verhalten mit ihnen machen, wie die gleichen Funktionen aufrufen
-
und diese auf ähnliche Weise verwenden. Das sind also einige der coolen Sachen der objektorientierte Programmierung
-
aber wie du sehen wirst, gibt es noch eine Menge mehr.
-
Also, bleib dran!