Wenn Sie wollen, mit einem robusteren und prüfbar Ansatz gehen, könnten Sie Verwenden Sie eine Kombination aus Klassen und einem Fabrikmuster, um das Objekt auszugeben. Sehen Sie sich Folgendes an, Sie werden sehen, dass mit dieser Konfiguration, einschließlich einer detaillierteren Logik und Tests auf der Straße, einfacher wird und Ihnen eine größere Flexibilität bietet. Sie abstrahieren auch weg das Objekt selbst hinter dem .issue
Anruf neu - was in einigen Fällen vorteilhaft und bequem sein kann.
Ich merke auch, dass Sie Ihren PHP-Hintergrund erwähnen, also zeige ich auch ein bisschen, wie ein objektorientierter Ansatz in ES6 genommen werden kann.
class AbstractShape {
constructor(type) {
this.type = type;
}
getType() {
console.log(`I am a ${this.type}`);
}
}
class Square extends AbstractShape {
constructor(type) {
super(type);
this.sides = 4;
}
getDescription() {
console.log(`I have ${this.sides} equal sides`);
}
}
class ShapeFactory {
static issue(type) {
switch(type) {
case 'Square': return new Square(type);
break;
case 'Circle': /* same pattern with a Circle class */
break;
}
}
}
let shape = ShapeFactory.issue('Square');
shape.getType(); /* I am a Square */
shape.getDescription(); /* I have 4 equal sides */
JSFiddle Link - Demo
Des Weiteren würden, wenn Sie etwas ein bisschen mehr fehlertolerant als den Umgang mit redundanten Strings wie zum Beispiel 'Square'
- there are some creative ways um Enum-ähnliche Ansätze zu nutzen, die dies noch weiter verfeinern könnten. Ich werde die Immobilien hier speichern und das Code-Snippet nicht erneut hashen, sondern werde eine Geige für Sie einschließen.
JSFiddle Link - Enum Ansatz Demo
Es ist wie das Aufrufen von 'new Square()' – zabusa