[S3L4] Classes Flashcards
Sind Klassen in Javascript so wie Klassen in anderen Sprachen?
-Nein
Sind Klassen in Javascript nativ vorhanden?
- Nein, sie sind nur syntactic sugar.
- Sie sind Constructors und Prototypes
Ist Javascript eine native Objektorientierte Sprache OOP?
-Nein, mit ES6 wurden Klassen nur sehr vereinfacht
Was sind Klassen in Javascript?
- Sie sind Constructors und Prototypes
- Spezielle Funktionen (Wie Arrow Functions besonders sind)
Wie richtet man eine Klasse ein?
clas Rectangle { constructor(height, width) { this.height = height; this.width = width; } }
const newRect = new Rectangle(400, 800);
Was macht die Constructor Function in einer Class?
- Ist der Kleber, welche alles zusammenbindet
- Alle direkten Attribute/Properties werden im Constructor gesetzt
Muss man sowas wie Parent.call(this, bananaAttrs) mit Classes noch verwenden?
-Nein, braucht man nie wieder
Was macht die extends Methode?
-Ersetzte das .call(this, someAttrs); in Zukunft
was macht die super() Function?
-Ersetzte jegliche andere bishere Syntax um Objects und Prototypes zu verbinden
Sind Klassen nur Funktionen?
-JA!
Erkläre die Klasse: class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } }
class Dog extends Animal { constructor(name) { super(name); } speak() { console.log(this.name + ' barks.'); } }
- Animal ist eine Klasse
- Animal hat eine Klassenmethode speak()
- extends erweitert eine Klasse
- super(name) wird den Namen an die Animal Class hochgeben (Binding mit .call und Prototyp Binding)
Was macht super ()?
-Gibt die Attribute an die Oberklasse weiter
Wenn man eine Klasse extended muss man super() benutzen?
Ja, sonst erhält man keinen Zugang zu den Attributen!
Gebe ein Beispiel einer Class an:
class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } }
class Dog extends Animal { constructor(name) { super(name); } } }
class Cat extends Animal { constructor(name) { super(name); } speak() { console.log(this.name + ' meows.'); } } }
const sascha = new Dog(‘Sascha’);
coinsole. log(sascha );
sascha. speak(); //funktioniert, weil durch die Inheritance die speak() Methode reachable is
const thiara= new Cat('Thiara'); thiara.speak(); //thiara meows because she overrides the base method
Was für Vorteile bieten Klassen?
- Einfacher zu benutzen
- Inheritance is easy to manage
- Cleaner code
- Prototype system is native/free