Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自JSON的Init对象_Javascript_Json - Fatal编程技术网

Javascript 来自JSON的Init对象

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) {

我想从JSON初始化一个对象;像这样:

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];
}