Простая формулировка
Prototype pattern создаёт объект из существующего прототипа/шаблона, когда конфигурация уже «жива» в состоянии. В JS часто путают две разные идеи:
Object.create(proto) — пустой объект, чей [[Prototype]] делегирует lookup на proto (не копирует свойства).
- Клонирование — копирование состояния в другой объект (shallow/deep, shared nested, инварианты, внешние ресурсы).
const proto = { greet() { return "hi"; } };
const a = Object.create(proto);
a.greet();
const clone = { ...configured };
Когда что
Делегирование — делить поведение между многими объектами.
Клонирование — когда копировать настроенный инстанс яснее, чем звать factory/constructor.
Итог: в JS «prototype» чаще про делегирование [[Prototype]], а не про deep clone.