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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage