Ich kann einen JSON-String analysieren und in ein JavaScript-Objekt verwandeln. Sie können JSON.parse()
in modernen Browsern (und IE9 +) verwenden.
Das ist großartig, aber wie kann ich dieses JavaScript-Objekt in ein bestimmtes JavaScript-Objekt verwandeln (dh mit einem bestimmten Prototyp)?
Angenommen, Sie haben:
function Foo()
{
this.a = 3;
this.b = 2;
this.test = function() {return this.a*this.b;};
}
var fooObj = new Foo();
alert(fooObj.test() ); //Prints 6
var fooJSON = JSON.parse({"a":4, "b": 3});
//Something to convert fooJSON into a Foo Object
//....... (this is what I am missing)
alert(fooJSON.test() ); //Prints 12
Auch hier frage ich mich nicht, wie man eine JSON-Zeichenfolge in ein generisches JavaScript-Objekt konvertiert. Ich möchte wissen, wie man einen JSON-String in ein "Foo" -Objekt konvertiert. Das heißt, mein Objekt sollte jetzt eine Funktion 'test' und die Eigenschaften 'a' und 'b' haben.
UPDATE Nach einigen Recherchen habe ich darüber nachgedacht ...
Object.cast = function cast(rawObj, constructor)
{
var obj = new constructor();
for(var i in rawObj)
obj[i] = rawObj[i];
return obj;
}
var fooJSON = Object.cast({"a":4, "b": 3}, Foo);
Wird es funktionieren?
UPDATE Mai 2017 : Die "moderne" Art, dies zu tun, ist via Object.assign
, aber diese Funktion ist in IE 11 oder älteren Android-Browsern nicht verfügbar.