我想从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复制对象的方法,因为它们都需要直接设置'这个'
function myObj(myJSON) {
var tempObj = JSON.parse(myJSON);
this = tempObj.splice(0);
}
var test = new myObj('{"name":"test"}');
更新:我不能只是"切入追逐? var test = JSON.parse(' {" name":" test"}');"因为我的对象将有其他类型,例如:
function myObj(myJSON) {
this = JSON.parse(myJSON);
this.propertyNotFromJSON = 5;
this.func = function() {
this.propertyNotFromJSON++;
}
}
答案 0 :(得分:0)
function myObj(myJSON) {
var tempObj = JSON.parse(myJSON);
for(var prop in tempObj) this[prop] = tempObj[prop]; // copy all properties from the JSON
this.propertyNotFromJSON = 5;
this.func = function() {
this.propertyNotFromJSON++;
}
}
var test = new myObj('{"name":"test"}');
这就是我想要的。
答案 1 :(得分:0)
您可以通过以下方式逐个自动复制每个属性:
var temp = JSON.parse(myJSON);
for(prop in temp) {
this[prop] = temp[prop];
}