Po prostu włączyłem JavaScript i jestem trochę zaskoczony jego obiektowym zachowaniem. Właśnie próbowałem utworzyć klasę Point2D
z członkami x
, y
i rozszerzyć ją o klasę Point3D
z członkami x
, y
, z
. Zachowanie Próbuję osiągnąć coś takiego jak, powiedzmy w C#:Wywołanie konstruktora "nadklasy" w kodzie JavaScript
class Point2D
{
int x, y;
public Point2D(int x, int y) { this.x = x; this.y = y; }
}
class Point3D : Point2D
{
int z;
public Point3D(int x, int y, int z) : base(x, y) { this.z = z; }
}
Czytałem wiele rzeczy, ale nie wydaje się naprawdę znaleźć to, czego szukam. Oto co mam wymyślić do tej pory:
function Point2D(x, y) { this.x = x; this.y = y; }
Point2D.prototype.constructor = Point2D;
function Point3D(x, y, z) { Point2D.prototype.constructor.call(this); this.z = z; }
Point3D.prototype = new A(); // see latter explanation
Point3D.prototype.constructor = B;
var p = new Point3D(10, 20, 30);
co jest oczywiście błędne.
Teraz wiem, że muszę coś zrobić jak Point3D.prototype = new A(x, y)
ale nie chcę, aby stworzyć prototyp z stałychx
, y
współrzędnych i zmiennym z
. To musi być bardzo proste, ale po prostu go nie dostaję, nie mogę wywołać konstruktora nadklasy ani sprawić, żeby działał poprawnie.
Dziękuję bardzo, miałem ochotę i to było takie proste! Zdecydowanie daję lekturę przynajmniej jednej z tych książek. – Cancer