I expect it means that classes get implemented more along the way we implement them for js1. That methods (and instance var initial values) go on the prototype, rather than into the class "trait" (as they call it, just to confuse us!).

I don't think it is of any value to us, because it must turn off all the optimization we are looking for by using 'real' classes.

There are a few places in our code where I have intentionally put methods or properties on the .prototype to get around the strictness of classes. E.g., `toString` is written as a method on our classes, but we are inconsistent about its argument list, so we can't easily make it override the public Object.toString. What I do instead it define LzEventable.prototype.toString and have that call our privat toString interface. (Whenever something needs to be coerced to a string, the runtime first looks for prototype.toString and then for an override of the public Object.toString method. It would never see our private toString methods if not for the trampoline on LzEventable.)

On 2008-11-14, at 14:37EST, Henry Minsky wrote:

Any idea what this means?


es=true|false   
Instructs the compiler to use the ECMAScript edition 3 prototype-based
object model to allow dynamic overriding of prototype properties. In
the prototype-based object model, built-in functions are implemented
as dynamic properties of prototype objects.

The default value is false.

Using the ECMAScript edition 3 prototype-based object model lets you
use untyped properties and functions in your application code. As a
result, if you set the value of the es compiler option to true, you
must set the strict compiler option to false. Otherwise, the compiler
will throw errors.

If you set this option to true, you must also set the value of the as3
compiler option to false.

This is an advanced option.



--
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to