Если нет необходимости создавать новый экземпляр, следующее сделает
_.merge(instance1, instance2)
. Это позволит глубоко объединить свойства instance2
в instance1
при сохранении прототипа.
Если объединенный экземпляр должен быть совершенно новым объектом, он все еще достижим:
let newInstance = Object.assign(Object.create(Object.getPrototypeOf(o1)), _.merge(o1, o2));
Это создаст новый объект, который является экземпляром того же класса o1
есть и глубоко погрузит в него свойства o1
и o2
.
Этот подход, однако, имеет некоторые оговорки, например (из здесь ):
Это вряд ли возможно, если экземпляр был создан с интенсивным использованием замыканий в функции конструктора.Мы можем никогда не узнать, какие внутренние значения были установлены и как воспроизвести такую настройку.