为什么jQuery扩展方法不复制我的javascript对象?
我在这里查阅了许多关于克隆和复制javascript对象的帖子,特别是以下两个主题:为什么jQuery扩展方法不复制我的javascript对象?,javascript,jquery,ajax,json,object,Javascript,Jquery,Ajax,Json,Object,我在这里查阅了许多关于克隆和复制javascript对象的帖子,特别是以下两个主题: 不过,这似乎对我不起作用 下面是我正在使用的一段代码: var copiedObject = {}; $.getJSON(URL, null, function (data) { copiedObject = jQuery.extend(true, {}, data); }); console.log(JSON.stringify(copiedObject)); 如果在JSON调用中有我
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)
函数,但都没有用
我遗漏了什么吗?
$。getJSON
触发一个Ajax请求,默认情况下该请求以异步方式运行。您的控制台.log将在请求完成之前启动。通过将控制台输出移动到回调中来修复它
$.getJSON(URL, null, function (data) {
copiedObject = jQuery.extend(true, {}, data);
console.log(JSON.stringify(copiedObject));
});
您是否尝试了console.log(copiedObject)
(没有JSON.stringify
)?谢谢,但是我的对象会在该函数之外保留它的值吗?我正试图限制我发出这个ajax请求的次数。@Rail24:是的。如果copiedObject
包含在较高的父作用域中,则可以在任何子作用域中访问其值。您需要确保的是,访问该变量的每段代码都在请求完成后执行。