On 11/28/12 12:32 PM, "Kevin Newman" <capta...@unfocus.com> wrote:

> It looks like adobe.js is using the constructor method as a kind of
> marker function, and compiling the actual constructor into the 'init'
> method (which is weird IMHO, since you can inherit from the parent
> constructor, and protect the prototype chain without calling the
> constructor via other means - and many AS3 classes may already
> legitimately be using an init method for other purposes, creating a
> collision).
FWIW, the adobe.js file was cooked up by me.  The original engineer did not
include it in the donation and I never saw his version.  Based on some
comments in the FalconJS code, I started with the code at [1] and modified
it until it actually did something.  So, since I'm a JS newbie I could have
screwed up something, but I'm pretty sure the code at [1] is the correct
starting point for what FalconJS outputs.

The init() name collision caught me too, but I think it would be easy to
change it so something a bit more obfuscated.
> 
> So, the adobe.extend( 'name', SuperRef ) - the SuperRef is the marker
> function, and when you call extend it should be invoking the super
> constructor (line 88 in adobe.js).
> 
> For methods, if a method name exists on parent, and also exists on
> child, the extend method is adding a closure, which will preserve, and
> then invoke the parent's method in _super() (line 75 in adobe.js).
As you probably know better than me, the author of [1] is a pretty
well-known JS guru.  I haven't looked at his other work like Jquery to see
if he uses this pattern there or has since become a convert to some other
pattern.  But for now I have to assume there was some important reason for
every line of the code.  Was it just to get instanceof to work?

I don't really care what the output code looks like, but I do know I don't
have the ability to quickly change the output code so I am working on other
aspects and hoping some other volunteer will do that if so motivated.
> 
> I didn't notice any place in the example code where super was invoked
> directly, so I'm not sure how Falcon handles that.
Did you really mean Falcon here or FalconJS?  I'm not sure I understood
this.  I don't think you can use super from outside the class to skip around
an override like I think you can in C++.
> 
>  From a quick look anyway.
> 
> Kevin N.
> 
> 
> On 11/28/12 2:54 PM, Daniel Wasilewski wrote:
>> Can any JS savvy person here tell me how according to adobe.js module
>> pattern call super? I just lost my head..., got 3 classes extending
>> each other and the only top one call init(); I am preparing those
>> performance tests for comparison.
>> 
>> Dan
> 

-- 
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui

Reply via email to