JSFiddle - React, Tailwind, and code Playground

JavaScript

function Collection() {
        if (!this instanceof Collection)
            return new Collection();
        this._innerList = [];
        this._xref = {};
        
        return this;
    }
    
    Collection.prototype.count = function() {
        return this._innerList.length;
    };
    Collection.prototype.add = function(obj) {
        this._xref[obj.name] = this._innerList.push(obj) - 1;
    }
    Collection.prototype.get = function(id) {
        if (typeof id == "string") {
            return this._innerList[this._xref[id]];
        } else {
            return this._innerList[id];
        }
    };
    
    var foo = new Collection();
    foo.add({name: "someitem", value:"hello world"});   
    console.log(foo.count()); // 1
    
    var bar= new Collection();
    bar.add({name: "someotheritem", value:"hello world"});
    console.log(bar.count()); // 1