Here's my javascript object, I would like to know how to avoid using "this" so many times in prototype. I know there is lot of theory and links for prototypal inhericance and this has probably been answered already, but as I haven't been able to make all ends meet, I thought this may be worth another question.
function shape(smth) {
this.a = smth
this.b = 2
this.c = 3
}
shape.prototype.doCalculus = function () {
return this.a * this.b + this.c - (2 * (this.b + this.c) + this.a);
}
module.exports = shape
If you want public members of an object, they MUST be referenced from the this
pointer. That's how OO works in Javascript. No alternative.
If you have lots of references to the same variable within a function, you can temporarily put it in a local variable just to save some reference logic (same as with any multiple step reference), but you will still have to initially retrieve using this.varName
.
There is a scheme that uses "private" member variables in a constructor closure and does not use the prototype that can be used in some situations and this allows you to refer to the variables directly without this use of this
:
function shape(smth) {
var a = smth,
b = 2,
c = 3;
this.doCalculus = function() {
return a * b + c - (2 * (b + c) + a);
}
}
module.exports = shape
For object types where you create lots of instances, this may consume a bit more memory because methods are not stored on a shared prototype, but are created separately for each instance. There are those who argue the difference in memory consumption is immaterial in most uses.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments