我知道如何解析JSON字符串并将其转换为JavaScript对象。
你可以在现代浏览器(和IE9+)中使用JSON.parse()
这是伟大的,但我怎么能采取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”对象。也就是说,我的对象现在应该有一个函数'test'和属性'a'和'b'。
<强>更新 在做了一些研究之后,我想到了这个
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年5月更新:“现代”的方法是通过Object.assign
,但这个功能在IE 11或更老的Android浏览器中不可用。