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 flexcoders@yahoogroups.com, "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
>


Reply via email to