【发布时间】:2011-08-17 22:24:50
【问题描述】:
我知道如何解析 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 浏览器中不可用。
【问题讨论】:
标签: javascript json parsing object prototype