如何在javascript而不是引用中创建json对象的副本

时间:2016-05-27 13:48:01

标签: javascript mocha

我有带有json测试数据的testdata.js文件,如下所示:

testdata.js文件:

module.exports = 

{         createHost:         {

        name : "System-001",
        description: "Creating System",

    }

}

在另一个测试中,我试图用上面的测试数据创建一个名为testcase1的变量。更改testcase1中的属性值,更改testdata.js文件json对象中的值。

it("Create a host", function(){
var testcase1 = testdata.createHost;

testcase1.name="sys-002";

console.log(testcase1.name);
console.log(testdata.createHost.name);
});

响应: SYS-002 SYS-002

我的要求是创建一个testdata副本,而不是创建一个引用。我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

最短路:

var copied = JSON.parse(JSON.stringify(object));

答案 1 :(得分:0)

您可以使用for in循环遍历每个属性并按值分配。

var createHost = { name : "System-001", description: "Creating System" }
var test = {};
for (var key in createHost)
	test[key] = createHost[key];
  
test.name = "Test";

console.log(test.name);
console.log(createHost.name);

答案 2 :(得分:0)

您可以使用jQuery中的extend函数来克隆对象:

var testCaseClone = jQuery.extend({}, testdata);

答案 3 :(得分:0)

没有" JSON对象" (除非你的字面意思是包含parsestringify函数的全局对象)。只有JSON字符串。因此,您可以使用简单的=运算符复制它们。

var copy_json_string = original_json_string

如果你需要复制一个对象(它是对象,只有对象,而不是" JSON对象"),有几十个答案已经,例如:How do I correctly clone a JavaScript object?

相关问题