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;
}
});
};
}