Próbuję uzyskać obiekt JavaScript, aby użyć "tego" przypisania konstruktora innego obiektu, a także założyć prototyp wszystkich tych obiektów Funkcje. Oto przykład tego, co ja próbuje osiągnąć:Funkcja JavaScript używająca "this =" daje "Nieprawidłowa lewa strona w przypisaniu"
/* 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.
}
Byłbym wdzięczny za swoje myśli, w jaki sposób mają ObjY podciągnięcia przypisania ObjX do „tego” (nie znaczy trzeba powtórzyć wszystkie this.$* = *
zadania w Konstruktor ObjY) i niech ObjY przyjmie ObjX.prototype.
Moja pierwsza myśl to spróbuj wykonać następujące czynności:
function ObjY(a,b,c) {
this.prototype = new ObjX(a,b*12);
}
Idealnie chciałabym dowiedzieć się, jak to zrobić w sposób prototypal (czyli nie trzeba używać żadnej z tych „klasycznych” jak substytuty OOP Base2).
Warto zauważyć, że ObjY będzie anonimowy (na przykład factory['ObjX'] = function(a,b,c) { this = ObjX(a,b*12); ... }
) - jeśli mam właściwą terminologię.
Dziękuję.
related: [? Dlaczego nie można przypisać nową wartość „to” w funkcji prototypowej] (http: // stackoverflow.com/q/9713323/1048572) – Bergi