Ein Objekt nach der Deserialisierung in Node.js wieder mit seiner Klasse verknüpfen

Ich schreibe ein einfaches Serialisierungs- / Deserialisierungs-Framework für einige anwendungsspezifische Objekte.

Folgendes berücksichtigen

"use strict";
function Dog(name) { this._name = name; };
Dog.prototype.constructor = Dog;
Dog.prototype.getName = function() { return this._name; }

var d1 = new Dog('fido');
var d2 = JSON.parse(JSON.stringify(d1));  // serialize / deserialize

> d1
Dog { _name: 'fido' }
> d1.getName()
'fido'
> d2
{ _name: 'fido' }
> d2.getName()
TypeError: d2.getName is not a function

n diesem Punkt kann man fragen: "Was machtd1 habe dasd2 fehlt? "

Ein Ansatz, der teilweise funktioniert, besteht darin, die Methoden von d1 bis d2 manuell zuzuweisen:

> d2.constructor = d1.constructor
> d2.getName = d1.getName
> d2.getName()
'fido'

Dies hat ein paar Nachteile. Zuerst muss ich jede Methode von d1 bis d2 manuell zuweisen. Zweitens erhält d2 seine eigenen Eigenschaften und teilt sich keine Slots mit dem Prototyp-Mechanismus:

> d2
Dog {
   _name: 'fido',
  constructor: [Function: Dog],
  getName: [Function] }

So ist meine verfeinerte Frage: ein Objekt gegeben (z. B.d2), gibt es eine Möglichkeit, es mit dem Prototyp eines anderen Objekts zu verknüpfen (z. B.d1) so erbt es das gleiche Verhalten?