让我们说我们有一个数组,在该数组内有2个相同的对象,例如
var myArray = [];
myArray.push({id:1, errorMsg: null});
myArray.push({id:1, errorMsg: null});
为什么当我尝试通过index修改属性errorMsg时,该更改会影响这两个对象。例如
myArray[0].errorMsg = 'its an error';
答案 0 :(得分:1)
array的元素是引用,它们可能指向同一对象,因此更改一个引用会在两个地方反映
例如
var a = {b:'hi'}
var arr = [a,a]
// if you change
arr[0].b = 'hello'
// both members of array will change
答案 1 :(得分:0)
使用索引修改任何errorMsg
只会更改该索引的值。
检查以下示例:
var myArray = [{ id: 1, errorMsg: null },
{ id: 2, errorMsg: null },
{ id: 3, errorMsg: null }]
myArray[0].errorMsg = 'its an error';
myArray[2].errorMsg = 'this is last error';
for (i = 0; i < myArray.length; i++) {
console.log(myArray[i].id + ' = ' + myArray[i].errorMsg);
}
所以您的代码是正确的,没有错误。