Ответ 1
Ну... Это интересная тема, и понимание этого трюка требует немного прочитать представление объекта V8-компилятора. Я не эксперт в этом, но тема была достаточно интересной, чтобы интриговать меня, чтобы найти какой-то ответ. Итак, вот что я нашел.
Прежде всего, удаление свойства, похоже, является трюком для изменения внутренней структуры того, как сохраняются и доступны свойства объекта. Другими словами, удаление свойства переключает объект в режим словаря, где свойства хранятся в хэш-карте. Поэтому, когда свойство dummy удаляется сразу же после его создания, вы получаете объект в режиме словаря.
V8 может справиться с незначительными расхождениями, как это просто отлично, но если ваш код присваивает все виды случайных свойств объектам из одного и того же конструктора в каком-либо конкретном порядке или если вы удаляете свойства, V8 переведет объект в режим словаря, где хранятся свойства в хеш-таблице. Это предотвращает выделение абсурдного количества карт.
Взято из этой приятной статьи. Обзор V8: представление объекта