and here is the bug id: http://bugs.adobe.com/jira/browse/ASC-2812
On 9/27/07, Johannes Nel <[EMAIL PROTECTED]> wrote: > > as a side note, someone on the player team did think this was a bug before > i logged it post i escalated it to people who know more people than i do :) > > On 9/27/07, Johannes Nel <[EMAIL PROTECTED]> wrote: > > > > var mo:MyOther = new MyOther(); > > var mp:MyProxy = new MyProxy(); > > mo.nextfunction = mp['go'] > > > > this is a very good point. > > > > > > > > On 9/27/07, actionscript_czar <[EMAIL PROTECTED] > wrote: > > > > > > 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 <flexcoders%40yahoogroups.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 > > > > > > > > > > > > > > > > > > > > > -- > > j:pn > > \\no comment > > > > > -- > j:pn > \\no comment -- j:pn \\no comment