ฉันรู้วิธีแยกสตริง JSON และเปลี่ยนเป็นวัตถุ JavaScript คุณสามารถใช้JSON.parse()
ในเบราว์เซอร์ที่ทันสมัย (และ IE9 +)
เยี่ยมมาก แต่ฉันจะนำวัตถุ JavaScript นั้นไปใช้และเปลี่ยนเป็นวัตถุ JavaScript ที่เฉพาะเจาะจง (เช่นกับต้นแบบที่แน่นอน) ได้อย่างไร
ตัวอย่างเช่นสมมติว่าคุณมี:
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
อีกครั้งฉันไม่สงสัยว่าจะแปลงสตริง JSON เป็นวัตถุ JavaScript ทั่วไป ฉันต้องการทราบวิธีแปลงสตริง JSON เป็นวัตถุ "Foo" นั่นคือตอนนี้วัตถุของฉันควรมีฟังก์ชั่น 'ทดสอบ' และคุณสมบัติ 'a' และ 'b'
UPDATE หลังจากทำวิจัยแล้วฉันคิดถึงสิ่งนี้ ...
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);
มันจะใช้ได้ไหม
อัปเดตพฤษภาคม, 2017 : วิธีการ "ทันสมัย" ในการทำเช่นนี้ผ่านObject.assign
แต่ฟังก์ชั่นนี้ไม่สามารถใช้ได้ในเบราว์เซอร์ IE 11 ขึ้นไป