Ruf den Ersetzer * vor * dem toJSON des Objekts an?

Gibt es eine Möglichkeit, meinen Ersatz mit dem Namen @ zu bekommeVo ein Objekt gehörttoJSON transformiert es, sodass ich mit dem Originalobjekt anstatt mit seiner JSON-freundlichen Form arbeiten kann.ohn das @ überschreibtoJSON auf dem Objekt oder seinem Prototyp, Vorverarbeitung des Objekts oder Schreiben meiner eigenen Version vonJSON.stringify?

Zum Beispiel: Angenommen, ich möchte @ serialisiereDate Instanzen anders als ihre normale Serialisierung welches isttoISOString). (Diese Frage istnich speziell fürDate, dies ist nur ein Beispiel.) Das Problem ist, dass mein Ersetzer das @ nicht siehDate -Objekt, es wird eine Zeichenfolge angezeigt (siehe Ausschnitt unten), daDate.prototype.toJSON wird genanntVo mein Ersatz.

var obj = {
  d: new Date()
};
snippet.log(getType(obj.d));     // "[object Date]"

var json = JSON.stringify(obj, function(key, value) {
  if (key === "d") {
    snippet.log(getType(value)); // "string" <== Want to see a Date here
  }
  return value;
});

function getType(value) {
  var to = typeof value;
  if (to === "object") {
    to = Object.prototype.toString.call(value);
  }
  return to;
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

Gibt es eine Möglichkeit, den Ersetzer zuerst anzurufen? Ich möchte @ nicht überschreibDate.prototype.toJSON, das Objekt vorverarbeiten oder mein eigenes @ schreibJSON.stringify, aber ich sehe keinen anderen Weg.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage