我有带有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副本,而不是创建一个引用。我怎么能这样做?
答案 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对象" (除非你的字面意思是包含parse
和stringify
函数的全局对象)。只有JSON字符串。因此,您可以使用简单的=
运算符复制它们。
var copy_json_string = original_json_string
如果你需要复制一个对象(它是对象,只有对象,而不是" JSON对象"),有几十个答案已经,例如:How do I correctly clone a JavaScript object?。