javascript - 如何在数组中存储对象的不同状态?

标签 javascript jquery

我有一个名为 apples 的对象,如果我执行 apples[0].weight 之类的操作,它会返回一个值。现在我希望能够存储一个苹果数组。让我们调用数组 myApples。如何将 apples 的多个实例添加到 myApples 数组中,而不将值更改为最新的值。例如:

apples[0].weight = 10;
apples[1].weight = 20;
myApples.push(apples);
apples[0].weight = 15;
apples[1].weight = 16;
myApples.push(apples);

现在,如果我要打印值 myApples[0].apples[0].weight 我会得到 15 而不是 10。我认为这是因为引用是同一个数组,所以它每次我更改它时都会更新。我将如何存储这些“状态”,以便我可以保留对其所做的更改的历史记录。请记住,我想让这个任意,所以我不必制作像 apples1、apples2、apples3 这样的东西,因为对此的更改可能是无限的。(在我的实际项目中,我将精确点存储在 Canvas 上,所以我基本上可以执行“撤消”和“重做”功能,并希望在 Canvas 上每次发生变化时存储这些精确点的值。)

编辑- 这就是我制作苹果pinpoints的方法:

var options = {pinpoints: [ { "top": 50,
                           "left": 280,
                           "width": 200,
                           "height": 200},
                         { "top": 0,
                           "left": 0,
                           "width": 300,
                           "height": 74 } ]}    
var optionConfig = $.extend({}, $.fn.mapImage.defaults, options);
var myPinpoints = optionConfig.pinpoints;

因此,如果我执行 myPinpoints[0].left ,它会给我 280,我希望能够将 myPinpoints 插入数组,然后将 myPinpoints[0].left 更改为其他内容,然后再次将其插入数组并保存两个值

最佳答案

您可以使用 jQuery.clone 类型的 API 来克隆对象并将其移动到堆栈或队列中。 这样您就可以确保单独维护对象状态。

关于javascript - 如何在数组中存储对象的不同状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021459/

相关文章:

javascript - 跨多个文件的 IIFE

jquery - Meteor Blaze 最佳实践是什么? meteor .events 与 jquery

javascript - 加载完成事件后的 jQuery

javascript - 如何自定义 Angular/Bootstrap 模式转换

JavaScript 调用 - 我可以直接访问对象属性

asp.net - 将 ContentPlaceHolder 添加到 site.master

javascript - 我们不能通过 jQuery .post 方法发送一个整数吗?

javascript - 访问对象内对象的键和值

jquery - 从 jquery 获取偏移值

jquery - 使用 jQuery 切换 Flex div