Одним из особенно не элегантных решений является использование JSON-кодирования для создания глубоких копий объектов, у которых нет методов-членов. Методология состоит в том, чтобы JSON кодировать ваш целевой объект, а затем, расшифровав, вы получите искомую копию. Вы можете декодировать столько раз, сколько хотите, чтобы сделать столько копий, сколько вам нужно.
Конечно, функции не принадлежат JSON, поэтому это работает только для объектов без методов-членов.
Эта методология идеально подходит для моего варианта использования, поскольку я храню двоичные объекты JSON в хранилище значений ключей, и когда они представляются как объекты в API-интерфейсе JavaScript, каждый объект фактически содержит копию исходного состояния объект, чтобы мы могли вычислить дельту после того, как вызывающий объект мутировал экспонированный объект.
var object1 = {key:"value"};
var object2 = object1;
object2 = JSON.stringify(object1);
object2 = JSON.parse(object2);
object2.key = "a change";
console.log(object1);// returns value