Javascript 来自JSON的Init对象
我想从JSON初始化一个对象;像这样:Javascript 来自JSON的Init对象,javascript,json,Javascript,Json,我想从JSON初始化一个对象;像这样: function myObj(myJSON) { this = JSON.parse(myJSON); } var test = new myObj('{"name":"test"}'); 但由于您无法设置“this”,上述代码会出现以下错误: ReferenceError: invalid assignment left-hand side 我考虑创建一个临时对象,并尝试这样复制它: function myObj(myJSON) {
function myObj(myJSON) {
this = JSON.parse(myJSON);
}
var test = new myObj('{"name":"test"}');
但由于您无法设置“this”,上述代码会出现以下错误:
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 test=JSON.parse'{name:test}';因为我的对象将具有其他类型,例如:
function myObj(myJSON) {
this = JSON.parse(myJSON);
this.propertyNotFromJSON = 5;
this.func = function() {
this.propertyNotFromJSON++;
}
}
这就是我想要的。您可以逐个自动复制每个属性:
var temp = JSON.parse(myJSON);
for(prop in temp) {
this[prop] = temp[prop];
}
删除“new”操作符,只返回JSON.parse的结果?或者将所有结果包装在一个新对象中,然后返回该对象。为什么不只返回JSON.parse。。。?这会将JSON解析为JavaScript对象。因此,基本上,您是在尝试使用函数原型返回对象文本的新实例?@tucuxi OP似乎没有以任何特定方式使用_原型。如果以上是实际的代码片段,而不是OP代码的子集,那么这应该不是问题。@13ruce137-是的,他可能是唯一一个幻想破灭的人,认为这是个好主意,甚至是可能的!我发现了这件事,就在你回答之前把它贴了出来。
var temp = JSON.parse(myJSON);
for(prop in temp) {
this[prop] = temp[prop];
}