Wiem, jak przeanalizować ciąg JSON i przekształcić go w obiekt JavaScript. Możesz używać JSON.parse()
w nowoczesnych przeglądarkach (i IE9 +).
To świetnie, ale jak mogę wziąć ten obiekt JavaScript i przekształcić go w konkretny obiekt JavaScript (tj. Z pewnym prototypem)?
Na przykład załóżmy, że masz:
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
Ponownie, nie zastanawiam się, jak przekonwertować ciąg JSON na ogólny obiekt JavaScript. Chcę wiedzieć, jak przekonwertować ciąg JSON na obiekt „Foo”. Oznacza to, że mój obiekt powinien teraz mieć funkcję „test” oraz właściwości „a” i „b”.
AKTUALIZACJA Po przeprowadzeniu pewnych badań pomyślałem o tym ...
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);
Czy to będzie działało?
AKTUALIZACJA Maj, 2017 : „Nowoczesnym” sposobem jest użycie Object.assign
, ale ta funkcja nie jest dostępna w IE 11 i starszych przeglądarkach Android.