Ich versuche, ein JavaScript-Objekt zu erhalten, die "diese" Zuordnungen des Konstruktors eines anderen Objekts zu verwenden, sowie den Prototyp dieses Objekts anzunehmen Funktionen. Hier ist ein Beispiel dafür, was ich zu erreichen bin versucht:Javascript-Funktion mit "this =" gibt "ungültige linke Seite in Zuweisung"
/* The base - contains assignments to 'this', and prototype functions
*/
function ObjX(a,b) {
this.$a = a;
this.$b = b;
}
ObjX.prototype.getB() {
return this.$b;
}
function ObjY(a,b,c) {
// here's what I'm thinking should work:
this = ObjX(a, b * 12);
/* and by 'work' I mean ObjY should have the following properties:
* ObjY.$a == a, ObjY.$b == b * 12,
* and ObjY.getB == ObjX.prototype.getB
* ... unfortunately I get the error:
* Uncaught ReferenceError: Invalid left-hand side in assignment
*/
this.$c = c; // just to further distinguish ObjY from ObjX.
}
Ich wäre dankbar für Ihre Gedanken darüber, wie haben ObjY ObjX die Zuweisungen zu ‚this‘ subsumieren (dh nicht alle this.$* = *
Zuweisungen wiederholen müssen in ObjYs Konstruktor) und haben ObjY den ObjX.prototype angenommen.
Mein erster Gedanke ist folgendes zu versuchen:
function ObjY(a,b,c) {
this.prototype = new ObjX(a,b*12);
}
Im Idealfall möchte ich lernen, wie man dies in einer prototypischen Art und Weise zu tun (dh müssen keine dieser ‚klassischen‘ OOP Ersatz verwenden wie Base2).
Es kann bemerkenswert sein, dass ObjY anonym sein wird (z. B. factory['ObjX'] = function(a,b,c) { this = ObjX(a,b*12); ... }
) - wenn ich die Terminologie richtig habe.
Vielen Dank.
bezogen werden: [? Warum kann ich einen neuen Wert „this“ in einer Prototyp-Funktion zuweisen] (http: // stackoverflow.com/q/9713323/1048572) – Bergi