Alex,

I am sure nobody here said anything against your job and contribution. As a starting point is great!
And at least you get us started on this. And thank you for your hard work.

But I would be careful with a gurus. There is as many JS gurus as styles they invented. And the guy behind jQuery hmm.. if you are performance lover you have no idea how big damage he did to the JS community. Every single method up there is 100x slower to compare to native JS. People love it because is simple to use. Because they are too lazy to learn the core and basic concepts behind it. This language is flexible enough to write Action Script on top of it! But jQuery trade off, 100x or even 1000x sometimes proves is not worth it. Is a Be or Not-To-Be for a lot of applications.
Check how many tests on jsperf are putting jQuery into shame.
And pushing this into mobile development is complete misunderstanding of the current state of art.

I do believe that it is possible to make a easy to develop environment and spit out efficient code on the other side. And not many ongoing development in this area has as much opportunity to get something done well as Apache has at the moment.

Building on efficient solution/foundation is important, because from now on thing can only slow down.

Just my 2 cents
Dan

On 11/28/2012 9:35 PM, Alex Harui wrote:
And [1] is:

[1] http://ejohn.org/blog/simple-javascript-inheritance/


On 11/28/12 1:23 PM, "Alex Harui" <aha...@adobe.com> wrote:



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

Reply via email to