This doesn't seem to be a bug to me, just looking at it from a
limited perspective.
Image a class that lookes like this:
class MyClass
{
public var go:Function;
public function MyClass( goFunc:Function )
{
this.go = goFunc;
}
}
In this case go is a property that happens to be a function object.
So what if using your proxy with another class you did something like
this:
var mo:MyOther = new MyOther();
var mp:MyProxy = new MyProxy();
mo.nextfunction = mp['go']; // could also be mp.go
In that case it would use getProperty and your description is no
different. When you use the [] operators it gets the property then
you use the () operators to call the property. The () property is
expecting a function object on the left hand side. The reason it
doesn't use callProperty is because the () operators only see a
function object but don't see it as part of the MyProxy object.
This doesn't mean it couldn't work as you expect in the future, but
my understanding says the two methods of getting to go are processed
distinctly for a reason.
--- In [email protected], "Derek Vadneau" <[EMAIL PROTECTED]>
wrote:
>
> There seems to be a bug in flash.utils.Proxy. Here's some sample
code:
>
> var mp:MyProxy = new MyProxy();
>
> mp.myVar = 'something'; // calls flash_proxy setProperty as expected
>
> mp['myVar'] = 'something'; // calls flash_proxy setProperty as
expected
>
> mp.go(); // calls flash_proxy callProperty as expected
>
> mp['go'](); // calls flash_proxy getProperty - NOT expected
>
> Why is getProperty called where the [] operator is used instead of
the
> . operator in the case where a function is being called, but not
when
> setting a property?
>
> And in that case you MUST return a function or a runtime error will
be thrown.
>
> This is unexpected behaviour, as far as I can see.
>
> Another example:
>
> mp.obj.go();
>
> mp['obj']['go'](); // getProperty is called twice, callProperty is
NOT
> called at all
>
> The issue is that I am dealing with a dynamic API, so I don't always
> know that 'obj' or 'go' is a property vs. a method.
>
> But, because the getProperty is called when a callProperty should be
> called I am passing an instance of my Proxy class and a runtime
error
> is thrown.
>
> --
>
> Derek Vadneau
>