push is just wrong anyway, it looks at `.length` and you will end up with sparse array like this:

```js
var a = new Array(3);
a.push(3);
a;
[undefined × 3, 3]
```