我有一个类,它使用一个数组来初始化对象。该类还有一个方法,该方法将返回还原的数组。我的目标是添加该类的实现,以便存储在该类中的数组不受原始数组或还原数组的修改的影响。
下面的解决方案实际上是修改阵列,并在还原并将其登录到控制台时返回修改后的阵列。我如何修改该类,以使其在恢复数组时不会影响数组的修改?我已经将数组复制到构造函数中的私有变量中,但是push方法仍然可以向数组中添加元素。因此输出将是1,2和1,2,4
class SnapShot {
constructor(array) {
var arr = [...array];
this.getArr = function() {
return arr
};
}
restore() {
return this.getArr();
}
}
var array = [1, 2];
var snap = new SnapShot(array);
array[0] = 3;
array = snap.restore();
console.log(array.join());
array.push(4);
array = snap.restore();
console.log(array.join());
class SnapShot {
constructor(array) {
var arr = array;
this.arrCopy = [...array];
this.getArr = function() { return arr };
this.restore = this.restore.bind(this);
}
restore() {
return this.arrCopy;
}
}
i创建第二个变量来管理第一个值,并在restore方法上返回它。