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]