Saya tahu cara mengurai String JSON dan mengubahnya menjadi Obyek JavaScript. Anda dapat menggunakan JSON.parse()
di browser modern (dan IE9 +).
Itu hebat, tetapi bagaimana saya bisa mengambil Objek JavaScript itu dan mengubahnya menjadi Objek JavaScript tertentu (yaitu dengan prototipe tertentu)?
Misalnya, anggap Anda memiliki:
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
Sekali lagi, saya tidak bertanya-tanya bagaimana cara mengubah string JSON menjadi Obyek JavaScript umum. Saya ingin tahu cara mengubah string JSON menjadi Obyek "Foo". Artinya, Objek saya sekarang harus memiliki fungsi 'tes' dan properti 'a' dan 'b'.
PEMBARUAN Setelah melakukan riset, saya memikirkan hal ini ...
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);
Apakah itu akan berhasil?
UPDATE Mei, 2017 : Cara "modern" untuk melakukan ini, adalah melalui Object.assign
, tetapi fungsi ini tidak tersedia di IE 11 atau lebih lama browser Android.