Thanks for the feedback, allow me to explain the rationale for Array.of: One of the main goals of ES6 is to become a better language for library writers and code generators.
For compilation targets, ES/JS can't assume that implementations will always know what its factories are expected to construct: Imagine the following piece of code is used in a VM (think Dart->JS, LLJS->JS) var o = (function( construct, ...rest ) { return new construct( rest ); })( factory [, variable arity args] ); If factory is Array and only one numeric arg is given, inline like this: var o = (function( construct, ...rest ) { return new construct( rest ); })( Array, 10 ); The result of `o` will be an array with 10 empty indexes, as if it were called like: new Array(10) If you replace that by using Array.of(), you avoid this "gotcha" More comments inline... On Sunday, August 26, 2012 at 5:53 AM, Shijun He wrote: > Hi, > > I don't think Array.of() is useful, just stick on array literal seems enough: > > var a = [1,2,3] > var a1 = [3] > > Why we need this: > > var a = Array.of(1,2,3) > var a1 = Array.of(3) > > Is there any special benefit I missed? > Explained above :) > > > And there is another reason why I don't like Array.of() , myself write > a small library which use Array.of(type) to get a "strong-typed" > array: > > var StringArray = Array.of(String) > var a = StringArray.from(['a', 1, true]) // ['a', '1', 'true'] > a.push('string') // ['a', '1', 'true', 'string'] > a.push(100) // throws error > > And Function.of() : > > var sqrt = Function.of(Number).from(Math.sqrt) > sqrt(9) // 3 > sqrt('9') // error > sqrt(9, 'unwanted') // error > > I'd argue that if code is extending ES built-ins with non-standard properties, it accepts the risk that one day it may be in conflict. Rick > > > -- > hax > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss