【问题标题】:Why is the jQuery extend method not copying my javascript object?为什么 jQuery 扩展方法不复制我的 javascript 对象?
【发布时间】:2012-10-16 21:38:40
【问题描述】:

我在这里查看了许多关于克隆和复制 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)),以及“Copying an object in Javascript”帖子中的clone(obj) 函数,但均无济于事。

我错过了什么吗?

【问题讨论】:

  • 你试过console.log(copiedObject);(没有JSON.stringify)吗?

标签: javascript jquery ajax json object


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但是我的对象会在该函数之外保留它的值吗?我试图限制我必须发出这个 ajax 请求的次数。
  • @Rail24:是的。如果copiedObject 包含在更高的父范围内,您可以在任何子范围内访问它的值。您需要确保的是,访问该变量的每一段代码都会在请求完成后执行
猜你喜欢
  • 2017-05-25
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多