On 3/8/2013 4:03 PM, Andrea Giammarchi wrote:
getOwnPropertyKeys isn't shimmable, since there's no way to understand
a symbol in ES5, correct? In that case Object.keys() ain't mixin
enough, getOwnPropertyNames looks like the best option (which AFAIT
will act as getOwnPropertyKeys where only getOwnPropertyNames is
available since Symbols won't be implemented)
Same stuff is the super, I cannot simulate without `caller` that, I
did successfully with (the name might mislead) poo.js though:
https://github.com/WebReflection/poo#poojs
Too bad I cannot have caller and I wonder how transpilers gonna
implement that since it's needed at runtime.
Thanks Again, please correct me everywhere I am wrong if you have time
On Fri, Mar 8, 2013 at 3:55 PM, Allen Wirfs-Brock
<[email protected] <mailto:[email protected]>> wrote:
not exactly, you'd have to use getOwnPropertyKeys rather than
getOwnPropertyNames. Also it "rebinds" super references to from
source object to target objects.
On Mar 8, 2013, at 3:26 PM, Andrea Giammarchi wrote:
am I understanding mixin correctly?
'mixin' in Object || (Object.mixin = function mixin(
target, source
) {
for(var
keys = Object.getOwnPropertyNames(source),
i = keys.length; i--; Object.defineProperty(
target,
keys[i],
Object.getOwnPropertyDescriptor(
source,
keys[i]
)
)
);
return target;
});
thanks
On Fri, Mar 8, 2013 at 2:35 PM, Allen Wirfs-Brock
<[email protected] <mailto:[email protected]>> wrote:
The March 8, 2013 Rev 14 draft is now available at the usual
place:
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
Changes include:
*
Class bodies are now always string
*
*static* methods may now be defined in /ClassBody/
*
Updated comprehension syntax to use left-to-right order
*
Eliminated *is* and *isnt* operators
*
added grammar productions to allow unqualified super to
be used after new operator
*
expression to the right of *of* in *for-of* now
restricted to being /AssignmentExpression/
*
Almost all Chapter 15 constructors are now specified to
have an @@create methid and are initialized in a manner
that supports subclassing. (still need to work on Function)
*
Added Object.getOwnPropertyKeys function
*
Added Object.is <http://Object.is/> function
*
Tentatively added Object.mixin function
*
Array.from now takes an optional map function
*
Added String.prototype.normalize method
*
All String.prototype methods that accept RegExp arguments
will now work with subclasses of RegExp
*
Renamed Number.prototype.toInt to Number.prototype.toInteger
*
RegExp global, ignoreCase, multiline, source, sticky are
now prototype accessor properties rather than instance
own data properties. This is needed to support adding web
compatible compile method.
*
Added new RegExp.prototype methods that allow string
methods to work with RegExp subclasses: match, replace,
search, split, @@isRegExp
*
Map and Set constructors now accept a =n optional
comparator parameter. Only value currently allowed is "is"
*
ArrayBuffer and /Typed/Array object length no long
restricted to 2^32 limit
*
Eliminated all remaining references to [[Class]] and
[[NativeBrand]] (except for in some DataView code that
needs rewritting anyway)
*
Added SameValueZero abstraction operation that considers
-0 and +0 to be the same value.
*
Rename [[GetP]] to [[Get]] and [[SetP]] to [[Set]]
*
Specified that unless otherwise indicated, internal data
properties are created when an object is allocated.
Internal data properties are now explicitly listed in
ObjectCreate abstract operation calls.
*
internally consolidated
[[IsExtensible]]/[[IsSealed]/[[IsFrozen]] and
[[PreventExtensions]]/[[Seal]]/[[Freeze]] into two MOP
operations [[HasIntegrity]] and [[SetIntegrity]].
However, no public APIs (Proxy traps and Reflect
functions) changed.
*
Numerous editorial and technical corrections,
clarifications, and bug fixes
_______________________________________________
es-discuss mailing list
[email protected] <mailto:[email protected]>
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
Classes in general aren't straight transpilable to ES6. Not faithfully.
Part of their contract is that you can use them to extend builtins, for
example. I'm sure there are other little details as well. It is possible
to transpile all of ES6 to ES3 though if you're willing to write a
runtime and convert all operators to function calls that use the runtime
to implement the delta between ES6 and ES3.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss