< Return to Video

Object Methods (Video Version)

  • 0:01 - 0:06
    Im letzten Talk-Through haben wir gelernt, wie wir einen Objekttyp für unsere beiden Winston-ähnlichen Objekte erstellen
  • 0:06 - 0:09
    und diese dann mit den Konstruktoren initialisieren.
  • 0:09 - 0:13
    Nun muss ein Objekttyp nicht nur mit Eigenschaften verbunden sein.
  • 0:13 - 0:19
    Er kann auch mit Funktionalität verbunden werden. Denke an die Welt und all die Objekttypen in ihr
  • 0:19 - 0:26
    wie uns Menschen. Wir alle haben Größe und Alter, aber wir haben auch Dinge, die wir tun können, wie schlafen, essen und programmieren.
  • 0:26 - 0:31
    Und wir wollen diese Funktionen mit diesen Objekttypen assoziieren.
  • 0:31 - 0:36
    In diesem Programm, das genau gleich ist, wie wir beim letzten Mal aufgehört haben, haben wir hier eine Funktion,
  • 0:36 - 0:43
    drawWinston, die wir für beide Winston Objekte aufrufen. Wäre es nicht toll, wenn wir diese Funktion einfach
  • 0:43 - 0:49
    mit dem Objekttyp Winston verbinden könnten? Nun, das können wir, und es ist einfach zu machen.
  • 0:49 - 0:56
    Also schreiben wir unter unseren Konstruktor Winston - großes W - Punkt -prototyp
  • 0:56 - 0:59
    Der Prototyp, das ist ein neues Wort, das du wahrscheinlich noch nicht gesehen hast.
  • 0:59 - 1:06
    Der Prototyp ist diese Eigenschaft eines Objekts, an die wir Funktionen anhängen können
  • 1:06 - 1:13
    und das bedeutet, dass jedes Objekt, das eine Instanz dieses Objekts ist, dann diese Funktionen hat.
  • 1:13 - 1:20
    Wir können also sagen: "dot prototype" und dann "dot", und dann den Namen der Funktion, also sagen wir "draw,
  • 1:20 - 1:26
    equals, und dann können wir unseren drawWinston Code nehmen und ihn einfach
  • 1:26 - 1:33
    hierher verschieben. Was wir hier gemacht haben ist, dass wir eine Zeichenfunktion an unseren Winston Prototyp angehängt haben.
  • 1:33 - 1:40
    Und das bedeutet, dass wir in der Lage sein sollten, draw() für jedes Objekt vom Typ Winston aufzurufen
  • 1:40 - 1:45
    Wir sollten also in der Lage sein, draw() für winstonTeen oder winstonAdult aufzurufen.
  • 1:45 - 1:50
    Wenn wir eine Funktion wie diese haben, die wir auf ein Objekt anwenden können,
  • 1:50 - 1:55
    nennen wir das eigentlich eine "Methode", also hörst du mich jetzt vielleicht "Methode" sagen.
  • 1:55 - 1:58
    Sagen wir also, das ist "die Methode draw()". Okay.
  • 1:58 - 2:04
    So, jetzt löschen wir dies, und wir löschen das, und jetzt schauen wir, ob wir draw() aufrufen können?
  • 2:04 - 2:07
    winstonTeen.draw()
  • 2:07 - 2:14
    Ok. Wir haben einen Fehler, wir haben diese Fehlermeldung hier, sie sagt "winstObject ist nicht definiert"
  • 2:14 - 2:21
    Okay. Also, vorher haben wir dieses Argument an drawWinston übergeben, welches das Winston Objekt war
  • 2:21 - 2:26
    aber jetzt übergeben wir es nicht mehr. Ähm, also könnten wir dies ändern, um es zu übergeben
  • 2:26 - 2:31
    und dann, mal sehen, was würden wir hier übergeben? Wir müssten winstonTeen übergeben. Aha.
  • 2:31 - 2:38
    Das hat funktioniert, aber das scheint auch wirklich dumm zu sein. Ich rufe bereits draw auf dem Objekt selbst auf.
  • 2:38 - 2:44
    Ich sollte nicht auch noch das Objekt übergeben müssen. Das scheint überflüssig zu sein.
  • 2:44 - 2:48
    Und das stimmt, wir sollten das nicht tun müssen, also lass uns das hier löschen, und jetzt lass uns nachdenken.
  • 2:48 - 2:54
    Wenn wir innerhalb des Objekts sind, was könnten wir benutzen, um auf die Eigenschaften des Objekts zuzugreifen?
  • 2:54 - 3:00
    Nun, du siehst dir vielleicht unseren Konstruktor an und erinnerst dich an das spezielle Schlüsselwort "this" und denkst "ahh"
  • 3:00 - 3:09
    "Was, wenn wir dies einfach in this ändern!" Also ändern wir winstObject in "this".
  • 3:09 - 3:13
    Denn wir befinden uns gerade innerhalb des Objekts. Diese Funktion wird im Objekt ausgewertet
  • 3:13 - 3:17
    also bezieht sich das "this" auf das aktuelle Objekt.
  • 3:17 - 3:23
    Auf diese Weise können wir einfach "this" sagen und erhalten Zugriff auf alle Eigenschaften des aktuellen Objekts.
  • 3:23 - 3:27
    Und das funktioniert perfekt, siehst du? Ist das nicht cool?
  • 3:27 - 3:32
    Jetzt können wir also sagen winstonAdult.draw()
  • 3:32 - 3:38
    Tada! Und es wird auf die Eigenschaften von winstonAdult zugreifen, weil das das Objekt ist, für das es aufgerufen wird.
  • 3:38 - 3:46
    Das ist also das wirklich coole an dem Schlüsselwort "this", auch wenn es manchmal etwas verwirrend sein kann.
  • 3:46 - 3:52
    Alles klar, das war echt Cool, also lass uns eine weitere Methode hinzufügen. Okay, also, was könnte Winston noch tun?
  • 3:52 - 4:01
    Vielleicht wird er reden. Also machen wir eine Winston.prototype.talk, damit wir so viele Methoden an den Prototyp anhängen können, wie wir wollen.
  • 4:01 - 4:05
    Wir sagen also: "Ich bin Winston!"
  • 4:05 - 4:13
    Und dann sagen wir einfach this.x+20, und this.y+150.
  • 4:13 - 4:20
    Und dann, ist nichts passiert, aber das liegt natürlich daran, dass ich die Funktion noch nicht wirklich aufgerufen habe.
  • 4:20 - 4:25
    Also, lassen wir den Teenager sprechen, winstonTeen.talk(), er redet die ganze Zeit
  • 4:25 - 4:30
    Ich bin Winston, tada! Und dann winstonAdult.talk()
  • 4:30 - 4:37
    Tada! Alles klar, jetzt haben wir also diesen Winston Objekttyp, der folgende Eigenschaften hat: Nickname,
  • 4:37 - 4:45
    Age, x, y; und er hat Funktionalität: Verhaltensweisen, Methoden; die abhängig von den Eigenschaften unterschiedlich agieren
  • 4:45 - 4:51
    und wir können so viele Instanzen von Winstons erstellen, wie wir wollen und jede dieser Methoden darauf aufrufen.
  • 4:51 - 4:54
    Das ist doch ziemlich cool!
Title:
Object Methods (Video Version)
Description:

more » « less
Video Language:
English
Duration:
04:54

German subtitles

Revisions