Utmaningar

F06-01: Vilket av påståendena nedan är mest korrekt?

  • Vi tilldelar konstanten alfa ett nytt objekt från "Factoryn" Alfa.
  • Vi instansierar ett nytt objekt utifrån klassen Alfa och sparar dess referens i konstanten alfa.
  • Vi skapar en ny klass Alfa och sparar dess värde i konstanten "alfa".
  • Vi importerar objektet Alfa och instansierar en ny klass utifrån denna. Referensen sparas i konstanten alfa.
Kommentar

Det som är korrekt här är:

Vi instansierar ett nytt objekt utifrån klassen Alfa och sparar dess referens i konstanten alfa.

F06-02: Vad skrivs ut?

  • undefined
  • 16
  • TypeError: alfa.beta is not a function
  • 4
Kommentar

TypeError: alfa.beta is not a function

Slamkrypare. getters hanteras som egenskaper och ska alltså anropas utan ():

F06-03: Vad skrivs ut?

  • Lucifer
  • Type Error: cat is not an array
  • 13
  • 16
Kommentar

Lucifer

Koden gör precis det vi önskar. Objekt instantieras utifrån klassen Cat och läggs till i Arrayen Cats. Vi skriver sedan ut egenskapen "name" på objektet på index 2 i arrayen.

F06-04: Vad skrivs ut?

  • NaN
  • 49
  • Koden exekverar inte färdigt utan kraschar.
  • 41
Kommentar

41

Även denna kod gör vad den är avsedd att göra. Ett nytt objekt instantieras från klassen Alfa. Dess egenskap "value" initieras till 42. Objektets metod, increment, anropas sedan tre gånger och förändrar värdet av "value" till i tur och ordning:

  • 47
  • 40
  • 41

F06-05: Vad skrivs ut?

  • undefined is NaN years old.
  • Dexter is 13 years old.
  • [object Object]
  • Runtime error.
Kommentar

[object Object]

Slamkrypare. Observera diskriptansen mellan "tostring" och "toString". Vi måste vara nogranna när vi skriver våra metodnamn. Anledningen till att utskriften blir den den blir är att vår klass Cat inte innehåller "toString". Då följer javascripttolken prototypkedjan upp till Object och kör dess toString-metod.

Testa att byta till toString i metoddeklerationen.

F06-06: Vad skrivs ut?

  • 2500, -500, 30005042
  • Runtime Error
  • 10042
  • [object Object][object Object]
Kommentar

10042

Ett kodavsnitt som återigen gör vad det är tänkt att göra. Passa på att läsa på om valueOf som är tänkt att ge en värderepresentation av vårt objekt. I vårt fall ser vi till att valueOf representerar bankens "saldo", alltså summan av alla "deposits" (insättningar).