javascript - 在数组中存储对值的引用,然后重新分配原始变量 (JavaScript)

标签 javascript arrays pass-by-reference javascript-objects pass-by-value

这就是我想做的:

我有一个存储状态的对象以及先前状态的数组。

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/

相关文章:

javascript - 如何使用canvas javascript对文本进行动画处理并设置最大宽度和高度

java - 在 .jsp 文件中使用 javascript

c++ - 在 C++ 中使用 "double-pointer"动态数组

java - 传递参数与从函数返回参数

javascript - CSS 变换何时真正设置?

javascript - 应用 className/onClick/onChange 不适用于自定义 React 组件

javascript - 从数组中获取最大和最小日期

c - fgets、sscanf 和写入数组

c++ - 无法从 'DerivedClass *' 转换为 'BaseClass *&'

javascript - 有没有一种优雅的方法来 "simulate"通过引用传递 getter?