I'm not sure there is any measurable benefit so to speak. Someone with
more knowledge on the subject can correct me if i'm wrong.
For me, it's a stylistic/readability issue. I always use a local
variable for the base object. A small example:
var someObject = {
property: "value"
};
someObject.prototype.initialize = function() {
// init object properties, cache your dom elements, bind your
event handlers, etc
var self = this;
self.bindEventHandlers();
};
someObject.prototype.bindEventHandlers = function() {
// storing object as local variable helps here, because as scope
changes in the event handlers, we can still reference our base object
easily
var self = this;
$("#someID").bind("click", function(event) {
// "this" refers to the DOM element with id "someID" within
the scope of this handler
// so we can use self to refer to the base object
self.handleEvent(this, event);
});
};
So for me, it is easier to reference your base object when the scope
has changed when using a local variable like "self" (you can use
whatever you want of course), and I think it is more readable than
"this" because we aren't always sure to what "this" refers. Hope this
small example makes sense.
Others could disagree, but this is how i like to write my code. I'm
interested in what others do in practice :) I'm always looking to
learn!
On Dec 30, 5:48 am, Tom Wilson <[email protected]> wrote:
> I just finished reading "High Performance JavaScript" and now I'm paying more
> attention to scope. So my question is: within an object method, is there any
> benefit to declaring a local variable referencing 'this'? Is that just
> redundant? What about a local variable referencing a property of 'this' that
> is itself an object? Like var myLocal = this.someProperty so that you can
> refer to myLocal.x, myLocal.y, etc.
>
> Thanks!
>
> --Tom
--
To view archived discussions from the original JSMentors Mailman list:
http://www.mail-archive.com/[email protected]/
To search via a non-Google archive, visit here:
http://www.mail-archive.com/[email protected]/
To unsubscribe from this group, send email to
[email protected]