我在这里看了很多关于克隆和复制javascript对象的帖子,特别是这两个主题:
但这似乎对我不起作用。
以下是我正在使用的一段代码:
var copiedObject = {};
$.getJSON(URL, null, function (data) {
copiedObject = jQuery.extend(true, {}, data);
});
console.log(JSON.stringify(copiedObject));
如果我在JSON调用中有我的控制台日志功能,它会输出正确的值,但在该函数之后,它会被清空,并输出{}
。
我尝试使用copiedObject = JSON.parse(JSON.stringify(data))
以及“在Javascript中复制对象”帖子中的clone(obj)
函数,但都无济于事。
我错过了什么吗?
答案 0 :(得分:8)
$.getJSON
会触发 Ajax请求,默认情况下会运行 asyncronous 。您的console.log
将在请求完成之前触发。通过将控制台输出移动到回调中来修复它。
$.getJSON(URL, null, function (data) {
copiedObject = jQuery.extend(true, {}, data);
console.log(JSON.stringify(copiedObject));
});