Давайте сосредоточимся на вашем примере.Я не думаю, что фабричные функции требуются, хотя они могут быть предпочтительнее по той причине, которую вы указали.Например, вы можете получить информацию, скрывающуюся вместе с новой, используя шаблон раскрывающегося модуля.
Вот ссылка на разумное объяснение этого шаблона.http://jargon.js.org/_glossary/REVEALING_MODULE_PATTERN.md
Я думаю, что на самом деле это просто предпочтение одного шаблона другому, в этом случае выявление шаблона по сравнению с фабрикой.Вполне вероятно, что информация людей разрознена, и разные теории доминируют в разных местах.Вы только улавливаете часть дебатов и задаетесь вопросом, почему все не делают X над Y, они в основном пытаются удовлетворить аналогичные проблемы.
Вы найдете много избегания новых в статически типизированных языках, где зависимости становятся более серьезными из-за строгой типизации.Вы также получите разные ответы от функционального программиста, от процедурного программирования до ООП.Я думаю, что один интересный аспект javascript - это то, что он привносит в него людей из всех типов языков.
Я также думаю, что люди уделяют гораздо больше внимания композиции, а не наследованию, в отношении javascript.Реакт является отличным примером такого типа адвокации