Return to Video

Object Types (Video Version)

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

more » « less
Video Language:
English
Duration:
06:51

German subtitles

Revisions