A couple observations:

1) this whole issue is only relevant  if you actually have array objects 
containing holes.  Special treat for sparse arrays doesn't hurt anybody (other 
than implementors)  who doesn't use them.

2)  If we (and the broader developer community) don't like sparse behavior for 
Array then rather than introducing additional inconsistencies about the 
handling of hole (for example, making Array.forEach and for-of on a sparse 
array different)  it would be better to simply see if we can eliminate (or 
compartmentalize) the sparse behavior of arrays.

Some possible approaches

1)  Make all array instances dense and see what really breaks.  Possibly 
provide a new SparseArray "subclass". Anyone brave enough to do the experiment?

2)  Formalize the concept of sparseness into either a selectable attribute of 
arrays or as a special "subclass" of array.  Most current obviously non-sparse 
usages get the dense version:

var aDenseArray = [0,1,2,3,4,5,6,7];
var aSparseArray = [,,,,,,7];

console.log.(aDenseArray.isSparse());  //false
console.log.(aSparseArray.isSparse());  //true

var dense2 = new Array(0,1,2,3,4,5);

var dense3 = new Array(1000);
console.log.(dense3.isSparse());  //false

var sparse2 = new Array(1001);
console.log.(dense3.isSparse());  //true

var sparse3 = Array.sparse();
console.log.(sparse3.isSparse());  //true

Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to