如何防止JavaScript中的类对数组元素进行修改[重复]

问题描述 投票:1回答:2

我有一个类,它使用一个数组来初始化对象。该类还有一个方法,该方法将返回还原的数组。我的目标是添加该类的实现,以便存储在该类中的数组不受原始数组或还原数组的修改的影响。

下面的解决方案实际上是修改阵列,并在还原并将其登录到控制台时返回修改后的阵列。我如何修改该类,以使其在恢复数组时不会影响数组的修改?我已经将数组复制到构造函数中的私有变量中,但是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());
javascript arrays ecmascript-6 es6-class
2个回答
1
投票
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方法上返回它。

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.