Frage von maxlllll, 24

Kann mir jemand Tipps (oder es machen) geben wie man diese script in ein Objekt orientiertes Script macht danke :)?

Ein Objekt orientiertes script mit Konstruktor und klassen this. Danke im vorraus

https://fiddle.jshell.net/xog9eort/

Antwort
von Sarkophator, 7

In Javascript ist quasi alles ein Objekt und du kannst Objekte definieren indem du eine entsprechende Funktion erstellst und diese mit dem new-Operator aufrufst. Kannst in der Funktion dann auch ohne Probleme this verwenden.

function Example(b) {
this.a = 12;
this.b = b;
this.foo = function() {
console.log(this.a+this.b);
}
}

var obj = new Example(500);
obj.foo(); // Ausgabe: 512

Klassen und Konstruktoren im herkömlichen Sinne gibt es eigentlich nicht, bzw. die Funktionen sind quasi die Klassen und der Inhalt der Funktion quasi der Konstruktor.

Allerdings gibts mit dem ECMAScript 6 Draft welches mittlerweile in den modernsten Browserversionen weitgehend umgesetzt ist auch die Möglichkeit Klassen zu erstellen. Hast da natürlich dann aber das Problem der Browserkompatibilität.

class Example {
constructor(b) {
this.a = 12;
this.b = b;
}

foo() {
console.log(this.a+this.b);
}
}

let obj = new Example(500);
obj.foo(); // Ausgabe: 512

(Gibt übrigens auch Vererbung:)

class Example2 extends Example {
constructor(c, ...pars) {
super(...pars);
this.c = c;
}

bar() {
this.a *= this.c;
this.foo();
}
}

let obj2 = new Example2(3, 500);
obj2.foo(); // Ausgabe: 512
obj2.bar(); // Ausgabe: 536

Bei den Klassen ist zu beachten, dass diese zwingend erst definiert sein müssen, bevor sie benutzt werden können. D.h., folgendes geht nicht:

let obj3 = Example3();
class Example3 {
constructor() {
this.a = 500;
}
}

Die obigen Beispiele hier als Demo: (Benötigte Browserversion: (inkl. spätere Versionen) Chrome 42/49, Firefox 45, Edge 13, Safari 9)

https://jsfiddle.net/j8u54763/

Weiteres zu den Klassendefinitionen findest du hier:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

Keine passende Antwort gefunden?

Fragen Sie die Community