javacrypt, массив в js - это объект "с дополнительным обвесом", потому его можно использовать ещё и как обычный объект.
var goods = [];
var Product = (function(){
var ids = 0;
function Product(){
this.id = ids++ + Math.random();
goods.push( goods[this.id] = this );
}
Product.prototype = {
toString: function(){return '[object Product]'}
}
return Product
}())
temp = new Product();
alert(temp.id)
alert(goods[temp.id])
alert(goods[0])
Соответственно массив для перебора, id - для быстрого доступа. Впрочем это имеет смысл только на действительно больших количествах. Иначе и обычного массива хватит.