首页 > 解决方案 > 如何在 JS 构造函数中复制属性而不更改原始属性

问题描述

我是 JS 构造函数的新手。我有一个对象/构造函数。该函数将数据作为属性。但是我需要两份数据:一份用于更改,一份作为重置参考。但是,无论如何,改变一个似乎会改变另一个:

var myData = [1, 2, 3, 4, 5]
myFunction(myData)

function myFunction(data){
   this.updatableData = data;
   this.resetData = data;

   this.updatableData.pop()

   console.log(this.resetData)

   //expect [1,2,3,4,5]
   //but get [1,2,3,4]


}

标签: javascriptobjectconstructorproperties

解决方案


使用扩展语法制作原始数组的副本

var myData = [1, 2, 3, 4, 5]
myFunction(myData)

function myFunction(data){
   this.updatableData = data;
   this.resetData = [...data];

   this.updatableData.pop()

   console.log(this.resetData)
}


推荐阅读