Javascript function using "this = " gives "Invalid left-hand side in assignment"
Posted
by Brian M. Hunt
on Stack Overflow
See other posts from Stack Overflow
or by Brian M. Hunt
Published on 2010-03-12T04:43:55Z
Indexed on
2010/03/12
4:47 UTC
Read the original article
Hit count: 286
I am trying to get a Javascript object to use the "this" assignments of another objects' constructor, as well as assume all that objects' prototype functions. Here's an example of what I'm attempting to accomplish:
/* The base - contains assignments to 'this', and prototype functions
*/
function ObjX(a,b) {
this.$a = a,
$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.
}
I'd be grateful for your thoughts on how to have ObjY subsume ObjX's assignments to 'this' (i.e. not have to repeat all the this.$* = *
assignments in ObjY's constructor) and have ObjY assume ObjX.prototype.
My first thought is to try the following:
function ObjY(a,b,c) {
this.prototype = new ObjX(a,b*12);
}
Ideally I'd like to learn how to do this in a prototypal way (i.e. not have to use any of those 'classic' OOP substitutes like Base2).
It may be noteworthy that ObjY will be anonymous (e.g. factory['ObjX'] = function(a,b,c) { this = ObjX(a,b*12); ... }
) -- if I've the terminology right.
Thank you.
© Stack Overflow or respective owner