JSFiddle - React, Tailwind, and code Playground

JavaScript

var a = new MyArray(10);

for (var i = 0; i < 11; i++) {
    a.add(i);
    document.body.innerHTML += "Array length: " + a.length + "<br/>";
    document.body.innerHTML += "Old element: " + a[i] + "<br/>";
    a[i] *= 2;
    document.body.innerHTML += "New element: " + a[i] + "<br/>";
}

function MyArray(increment) {
    var array = new Uint32Array(increment);
    var length = 0;

    Object.defineProperty(this, "length", {
        get: function () {
            return length;
        }
    });

    this.add = function (value) {
        if (length === array.length) {
            var ext = new Uint32Array(length + increment);
            ext.set(array);
            array = ext;
        }

        var index = length++;

        document.body.innerHTML += "Underlying array length: " + array.length + "<br/>";

        array[index] = value;

        Object.defineProperty(this, index, {
            get: function () {
                return array[index];
            },
            set: function (value) {
                array[index] = value;
            }
        });
    };
}