2.8 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 definieren wir normalerweise eine Funktion constructor und verwenden das Schlüsselwort new, um ein Objekt zu instanziieren.
var SpaceShuttle = function(targetPlanet){
this.targetPlanet = targetPlanet;
}
var zeus = new SpaceShuttle('Jupiter');
Die Syntax class ersetzt einfach die Erstellung der Funktion constructor:
class SpaceShuttle {
constructor(targetPlanet) {
this.targetPlanet = targetPlanet;
}
}
const zeus = new SpaceShuttle('Jupiter');
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');