Javascript 停止更改影响该对象副本的一个对象参数

Javascript 停止更改影响该对象副本的一个对象参数,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,假设我有多个数组 var array1= []; var array2= []; var array3= []; 我还有另一个对象数组,每个对象都有一个健康参数。 假设我将此数组中的第一个对象推入array1、array2和array3 现在,如果我编辑array1对象的运行状况参数: array1[0].health -= 50 它会更改每个阵列对象的运行状况。我该怎么做才能让它只对我调用的数组执行呢?javascript中的对象是通过引用分配的,因此如果将同一个对象放在两个单独的数组中,

假设我有多个数组

var array1= [];
var array2= [];
var array3= [];
我还有另一个对象数组,每个对象都有一个健康参数。 假设我将此数组中的第一个对象推入array1、array2和array3

现在,如果我编辑array1对象的运行状况参数:

array1[0].health -= 50

它会更改每个阵列对象的运行状况。我该怎么做才能让它只对我调用的数组执行呢?

javascript中的对象是通过引用分配的,因此如果将同一个对象放在两个单独的数组中,每个数组元素都指向完全相同的对象

如果希望每个数组中有单独的对象,则必须为第二个数组显式创建一个新对象(如果需要,从第一个对象复制属性)

在jQuery中,可以使用
$.extend()
创建对象的副本。有关使用它的两种不同方法,请参见

或者,在普通Javascript中,这里有一个函数,它生成普通JS对象的浅拷贝

function copyObj(src) {
    var copy = {};
    for (var prop in src) {
        if (src.hasOwnProperty(prop)) {
            copy[prop] = src[prop];
        }
    }
    return copy;
}

javascript中的对象是通过引用分配的,因此如果将同一对象放入两个单独的数组中,每个数组元素都指向完全相同的对象

如果希望每个数组中有单独的对象,则必须为第二个数组显式创建一个新对象(如果需要,从第一个对象复制属性)

在jQuery中,可以使用
$.extend()
创建对象的副本。有关使用它的两种不同方法,请参见

或者,在普通Javascript中,这里有一个函数,它生成普通JS对象的浅拷贝

function copyObj(src) {
    var copy = {};
    for (var prop in src) {
        if (src.hasOwnProperty(prop)) {
            copy[prop] = src[prop];
        }
    }
    return copy;
}

javascript中的对象是通过引用分配的,因此如果将同一对象放入两个单独的数组中,每个数组元素都指向完全相同的对象

如果希望每个数组中有单独的对象,则必须为第二个数组显式创建一个新对象(如果需要,从第一个对象复制属性)

在jQuery中,可以使用
$.extend()
创建对象的副本。有关使用它的两种不同方法,请参见

或者,在普通Javascript中,这里有一个函数,它生成普通JS对象的浅拷贝

function copyObj(src) {
    var copy = {};
    for (var prop in src) {
        if (src.hasOwnProperty(prop)) {
            copy[prop] = src[prop];
        }
    }
    return copy;
}

javascript中的对象是通过引用分配的,因此如果将同一对象放入两个单独的数组中,每个数组元素都指向完全相同的对象

如果希望每个数组中有单独的对象,则必须为第二个数组显式创建一个新对象(如果需要,从第一个对象复制属性)

在jQuery中,可以使用
$.extend()
创建对象的副本。有关使用它的两种不同方法,请参见

或者,在普通Javascript中,这里有一个函数,它生成普通JS对象的浅拷贝

function copyObj(src) {
    var copy = {};
    for (var prop in src) {
        if (src.hasOwnProperty(prop)) {
            copy[prop] = src[prop];
        }
    }
    return copy;
}

如果希望在每个数组中都有对象的副本,并且不希望修改其中一个会影响其他数组,则需要克隆该对象。这篇文章上的答案将有助于你做到这一点:


如果您希望在每个数组中都有一个对象的副本,并且不希望对其中一个对象的修改影响到其他对象,则需要克隆该对象。这篇文章上的答案将有助于你做到这一点:


如果您希望在每个数组中都有一个对象的副本,并且不希望对其中一个对象的修改影响到其他对象,则需要克隆该对象。这篇文章上的答案将有助于你做到这一点:


如果您希望在每个数组中都有一个对象的副本,并且不希望对其中一个对象的修改影响到其他对象,则需要克隆该对象。这篇文章上的答案将有助于你做到这一点:

var array1=[]

var array2=[]

array1.health=50

array2.health=10

console.log(array1.health)

五十

现在仍然是50岁。另一方面,如果您的问题与更改数组元素有关

var array1=[0,1]

阵列1[0]。运行状况=50

阵列1[1]。运行状况=10

console.log(数组[0].health)将打印出10,因为运行状况是数组对象的属性,而不是元素。

var array1=[]

var array2=[]

array1.health=50

array2.health=10

console.log(array1.health)

五十

现在仍然是50岁。另一方面,如果您的问题与更改数组元素有关

var array1=[0,1]

阵列1[0]。运行状况=50

阵列1[1]。运行状况=10

console.log(数组[0].health)将打印出10,因为运行状况是数组对象的属性,而不是元素。

var array1=[]

var array2=[]

array1.health=50

array2.health=10

console.log(array1.health)

五十

现在仍然是50岁。另一方面,如果您的问题与更改数组元素有关

var array1=[0,1]

阵列1[0]。运行状况=50

阵列1[1]。运行状况=10

console.log(数组[0].health)将打印出10,因为运行状况是数组对象的属性,而不是元素。

var array1=[]

var array2=[]

array1.health=50

array2.health=10

console.log(array1.health)

五十

现在仍然是50岁。另一方面,如果您的问题与更改数组元素有关

var array1=[0,1]

阵列1[0]。运行状况=50

阵列1[1]。运行状况=10


console.log(数组[0].health)将打印出10,因为health是数组对象的属性,而不是元素。

我想您可能误解了这个问题。它更像是
varobj={health:100};var array1=[obj];var array2=[obj];数组1[0]。运行状况-=50;console.log(array2[0].运行状况);/*输出50*/
-他说他将同一个对象附加到多个不同的数组中,修改一个数组中的对象会导致所有数组中的对象都被修改。我想你可能误解了这个问题。它更像是
varobj={health:100};var array1=[obj];var array2=[obj];数组1[0]。运行状况-=50;console.log(array2[0].h