JSON字符串不能用成員函數表示對象,所以你唯一會從JSON字符串中得到的是原始數據。假設toJSON方法會生成一個JSON字符串,用於表示包含您的類實例的所有非函數成員的對象,您應該能夠獲取生成的對象並附加原型以獲取所有函數。例如,使用jQuery的方便extend
功能:
var o = new someObj("objName");
var json = Object.toJSON(o);
var json_obj = eval(json);
$.extend(json_obj, someObj.prototype);
json_obj.someMethodDefinedOnsomeObj()
根據您如何使用該框架來表示類在JavaScript中利用了原型對象模型,您milage很可能與上面的例子。另外,使用eval()會產生一個安全漏洞,所以如果你不相信JSON字符串來自哪裏,你應該使用不同的反序列化方法。只是爲了完全覆蓋,這裏是我如何與原始原型做到了:
function Animal(name){
this.name = name;
}
Animal.prototype.talk = function(){
console.log("My name is "+this.name);
}
var a = new Animal("Brendan Eich");
a.talk();
var json = '{name: "Tim Berners-Lee"}'
var b = eval(b);
$.extend(b, Animal.prototype);
b.talk();
在螢火控制檯這將產生輸出:
我的名字是布蘭登·艾克
我的名字叫蒂姆Berners-Lee
是的,我使用的是原型js。 – DNB5brims 2009-10-20 11:35:50