3.0 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b8b367417b2b2512b53 | Verwende die Klassensyntax, um eine Konstruktorfunktion zu definieren | 1 | 301212 | use-class-syntax-to-define-a-constructor-function |
--description--
ES6 bietet eine neue Syntax zum Erstellen von Objekten, die das Schlüsselwort class verwendet.
Es ist zu beachten, dass die Syntax class nur eine Syntax ist und keine vollwertige klassenbasierte Implementierung eines objektorientierten Paradigmas, anders als in Sprachen wie Java, Python, Ruby usw.
In ES5, an object can be created by defining a constructor function and using the new keyword to instantiate the object.
In ES6, a class declaration has a constructor method that is invoked with the new keyword. If the constructor method is not explicitly defined, then it is implicitly defined with no arguments.
// Explicit constructor
class SpaceShuttle {
constructor(targetPlanet) {
this.targetPlanet = targetPlanet;
}
takeOff() {
console.log("To " + this.targetPlanet + "!");
}
}
// Implicit constructor
class Rocket {
launch() {
console.log("To the moon!");
}
}
const zeus = new SpaceShuttle('Jupiter');
// prints To Jupiter! in console
zeus.takeOff();
const atlas = new Rocket();
// prints To the moon! in console
atlas.launch();
Es ist zu beachten, dass das Schlüsselwort class eine neue Funktion deklariert, zu der ein Konstruktor hinzugefügt wird. Dieser Konstruktor wird aufgerufen, wenn new aufgerufen wird, um ein neues Objekt zu erstellen.
Beachte: Für ES6-Klassennamen sollte per Konvention Großbuchstaben verwendet werden, wie in SpaceShuttle oben verwendet.
Die Methode constructor ist eine spezielle Methode zur Erstellung und Initialisierung eines Objekts, das mit einer Klasse erstellt wurde. Mehr darüber erfährst du im Abschnitt Objektorientierte Programmierung der Zertifizierung JavaScript Algorithmen und Datenstrukturen.
--instructions--
Verwende das Schlüsselwort class und schreibe einen constructor, um die Klasse Vegetable zu erstellen.
Mit der Klasse Vegetable kannst du ein Gemüseobjekt mit einer Eigenschaft name erstellen, die an den constructor übergeben wird.
--hints--
Vegetable sollte eine class mit einer definierten Methode constructor sein.
assert(
typeof Vegetable === 'function' && typeof Vegetable.constructor === 'function'
);
Das Schlüsselwort class sollte verwendet werden.
assert(code.match(/class/g));
Vegetable sollte instanziiert werden können.
assert(() => {
const a = new Vegetable('apple');
return typeof a === 'object';
});
carrot.name sollte carrot zurückgeben.
assert(carrot.name == 'carrot');
--seed--
--seed-contents--
// Only change code below this line
// Only change code above this line
const carrot = new Vegetable('carrot');
console.log(carrot.name); // Should display 'carrot'
--solutions--
class Vegetable {
constructor(name) {
this.name = name;
}
}
const carrot = new Vegetable('carrot');