function ArrayOf(...args) {
  var length = args.length;
  var constructor = this;
  // TODO: Implement IsConstructor (ES6 section 7.2.5)
  var array = %IsConstructor(constructor) ? new constructor(length) : [];
  for (var i = 0; i < length; i++) {
    %CreateDataProperty(array, i, args[i]);
  }
  array.length = length;
  return array;
}
function ArrayOf(...args) {
  var length = args.length;
  var constructor = this;
  
  var array = %IsConstructor(constructor) ? new constructor(length) : [];
  for (var i = 0; i < length; i++) {
    %CreateDataProperty(array, i, args[i]);
  }
  array.length = length;
  return array;
}
function ArrayOf ( ... args ) { var length = args . length ; var constructor = this ; // TODO: Implement IsConstructor (ES6 section 7.2.5) var array = % IsConstructor ( constructor ) ? new constructor ( length ) : [ ] ; for ( var i = 0 ; i < length ; i ++ ) { % CreateDataProperty ( array , i , args [ i ] ) ; } array . length = length ; return array ; }
ES6, draft 05-22-14, section 22.1.2.3
ES6 draft 05 - 22 - 14 section 22 . 1 . 2 . 3