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