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 >