为什么jQuery扩展方法不能复制我的javascript对象?

时间:2012-10-26 15:37:16

标签: javascript jquery ajax json object

我在这里看了很多关于克隆和复制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)函数,但都无济于事。

我错过了什么吗?

1 个答案:

答案 0 :(得分:8)

$.getJSON会触发 Ajax请求,默认情况下会运行 asyncronous 。您的console.log将在请求完成之前触发。通过将控制台输出移动到回调中来修复它。

$.getJSON(URL, null, function (data) {
     copiedObject = jQuery.extend(true, {}, data);
     console.log(JSON.stringify(copiedObject));
});