No, it isn't wrong which was entire the point of my earlier response. I
gave essentially the same example as you. In fact, you've included it
quoted at the bottom of your response which I left intact.
However, just because it is correct doesn't mean I prefer it over other
conventions. I prefer to use underscores with my field names.
-- james
Ash Warren wrote:
"In practice, you're right and I try not to name any parameters the same as
a field name to avoid "this" confusion. Don't tell anyone, but sometimes I
don't even use "this". :)"
So this is wrong?
function MyClass (myParam1:Number, myParam2:String)
{
this.myParam1 = myParam1;
this.myParam2 = myParam2;
}
For me this method seems much easier to read and it even refers to naming
parameters this way in the adobe best-practices article.
Why try and come up with 2 names for the same thing, when one will suffice
just fine?
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of JOR
Sent: Tuesday, October 10, 2006 5:52 PM
To: Flashcoders mailing list
Subject: Re: [Flashcoders] Moving to AS2, array always undefined
A bad practice most likely, but not technically wrong. I do see it in
text books from time to time. I was just mentioning it as a case where
"this" *would* be needed as opposed to speaking in absolutes.
In practice, you're right and I try not to name any parameters the same
as a field name to avoid "this" confusion. Don't tell anyone, but
sometimes I don't even use "this". :)
James O'Reilly - Consultant
Adobe Certified Flash Expert
http://www.jamesor.com
Design . Code . Train
Steven Sacks | BLITZ wrote:
Correct me if I'm wrong, but it looks like your rationale is entirely
based on an argument name being identical to a class variable name. I
might be looking at this too simply, but shouldn't you just use a
different argument name if it clashes with a class variable name?
-Steven
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:flashcoders-
[EMAIL PROTECTED] On Behalf Of JOR
Sent: Tuesday, October 10, 2006 1:19 PM
To: Flashcoders mailing list
Subject: Re: [Flashcoders] Moving to AS2, array always undefined
Actually, the "need" is dependent on the implementation.
It was my understanding that AS first looks to the local scope for the
existence of a variable then works up to find it. By using "this" you
were explicitly telling flash that the var isn't local to the function
but rather belongs to the object cutting out a step for the VM.
Therefore, something like the following becomes possible and the use
of
"this" becomes necessary:
class MyConstructor {
private var target:MovieClip;
public function MyConstructor (target:MovieClip) {
this.target = target;
}
}
Because you can not do this:
class MyConstructor {
private var target:MovieClip;
public function MyConstructor (target:MovieClip) {
target = target; // ?
}
}
However, depending on your naming conventions you "might" not have to
use "this" if you did something like the following:
class MyConstructor {
private var _target:MovieClip;
public function MyConstructor (target:MovieClip) {
_target = target;
}
}
Even still, I think the VM might check for the existence of a var
named
_target local to the constructor function before locating the object's
field named _target.
It's been a while since I've done anything in AS1 so I may be way off
here but I thought I remembered "this" being necessary because at
weird
times the VM would think you were trying to instantiate a local var if
you didn't use "this". Particularly in "on (something)" event
handlers.
Maybe I'm thinking of _global, or perhaps both. This, I'm not sure
about... if you'll excuse the pun. :)
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com