я в Вашем примере кода, попробовал не заталкивать с помощью "push" значения в массив, а использовать storage как объект, в который по ключу ставить значения:
storage[this] = newValue;
Это избавило меня от лишнего цикла.
Для меня оказалось удивительным то, что
this используемый как ключ, оказался уникальным, когда его (
this) используешь в едином замыкании для всех объектов, даже если объекты по существу будут одинаковыми(но не ссылками друг на друга).