这就是我想做的:
我有一个存储状态的对象以及先前状态的数组。
var object = { currentState: [Object], previousStates: [[Object], [Object]] };
当状态更改时,我想将对 currrentState 对象的引用存储在先前的 states 数组中,以便可以重用它,然后创建一个新状态(或重用旧状态)并将其存储在 currentState 中,而不更改原始对象传递给数组。如果有什么区别的话,状态是实例化的类对象。
这可能吗?
我已经查看了大量有关按引用传递和按值传递的资源,但我认为我需要在示例的上下文中对其进行解释。哪个示例将在 currentState 存储新状态而不更改推送到数组的先前值(如果有)?
function changeState1(states) {
states.previousStates.push(states.currentState);
states.currentState = new State();
}
function changeState2(states) {
var newState = new State();
states.previousStates.push(states.currentState);
states.currentState = newState;
}
编辑:
我可能应该提到,我的目的是创建高效的代码。如果我可以重用旧实例,我不想动态地从类中重新创建状态。它更有利于内存使用并减少垃圾收集。
最佳答案
也许是这样的?
var obj = newObjectState;
object.previousStates.push(object.currentState);
object.currentState = obj;
当然,这都是一种伪代码,但可能是您正在寻找的答案?
关于javascript - 在数组中存储对值的引用,然后重新分配原始变量 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43129850/