我想从JSON初始化一个对象;像这样:来自JSON的初始对象
function myObj(myJSON) {
this = JSON.parse(myJSON);
}
var test = new myObj('{"name":"test"}');
但既然你不能设置“本”,上面的代码中给出了这样的错误:
ReferenceError: invalid assignment left-hand side
我想到了创建一个临时对象,并试图将其复制像这样:
function myObj(myJSON) {
var tempObj = JSON.parse(myJSON);
this.name = tempObj.name;
// do the same for all other properties
}
var test = new myObj('{"name":"test"}');
这是有效的,但理想情况下,我宁愿不必一个一个地复制对象的每个属性。所以我找到了用JavaScript复制对象的方法,因为它们都需要直接设置'this',所以它们都不适用于我的情况。
function myObj(myJSON) {
var tempObj = JSON.parse(myJSON);
this = tempObj.splice(0);
}
var test = new myObj('{"name":"test"}');
更新:我不能只是 “切入正题VAR测试= JSON.parse(? '{ ”名“: ”测试“}');”因为我的对象将有其他类型,如:
function myObj(myJSON) {
this = JSON.parse(myJSON);
this.propertyNotFromJSON = 5;
this.func = function() {
this.propertyNotFromJSON++;
}
}
降“新”经营者和刚刚返回'JSON.parse()来'的结果呢?或者可能将所有结果包装到一个新对象中,然后返回该对象。 – SyntaxTerror
为什么不只是'JSON.parse(...)'?这将您的JSON解析为一个JavaScript对象。 – War10ck
是不是'JSON.parse()'本身的返回值正是你想要的? – Pointy