我有一個函數,我通過2個數組循環,並做一些邏輯。我的問題是,當我改變數組中的一個對象屬性時,他們也改變了我的基礎對象變量和整個兩個數組中的所有其他對象。即使我只想編輯特定的對象屬性。我不想粘貼整個代碼,所以我會告訴你我的重要功能,但也留下一個鏈接到我的整個代碼。其他變量沒有理由 - javascript
var updateMobs = function() {
for (var b = 0; b < mobsBlue.length; b++) {
BM = mobsBlue[b];
BM.x = BM.x - BM.object.speed;
doCollision(BM, redBase, BM);
doCollision(BM, debugPlayer, BM);
if (BM.x < 0){
mobsBlue.splice(b, 1);
};
BM.Draw(ctx, false, true, "blue")
};
for (var r = 0; r < mobsRed.length; r++) {
RM = mobsRed[r];
RM.x = RM.x + RM.object.speed;
doCollision(RM, blueBase, RM);
doCollision(RM, debugPlayer, RM);
if (RM.x > ctx.canvas.width){
mobsRed.splice(r, 1);
};
RM.Draw(ctx, false, true, "red")
for (var br = 0; br < mobsBlue.length; br++) {
BM = mobsBlue[br];
if (doCollision(RM, BM, collisionNull) == true) { // ATTACKING
BM.x = BM.x + BM.object.speed;
RM.x = RM.x - RM.object.speed;
if (BM.object.attackTime == BM.object.attackSpeed || RM.object.attackTime == RM.object.attackSpeed) {
if (BM.object.armourType == 'light') {
BM.object.health = BM.object.health - RM.object.lightDamage;
};
if (BM.object.armourType == 'heavy') {
BM.object.health = BM.object.health - RM.object.heavyDamage;
};
if (RM.object.armourType == 'light') {
RM.object.health = RM.object.health - BM.object.lightDamage;
};
if (RM.object.armourType == 'heavy') {
RM.object.health = RM.object.health - BM.object.heavyDamage;
};
alert("BLUE" + BM.object.health)
alert("RED" + RM.object.health)
if (BM.object.health <= 0) {
mobsBlue.splice(br, 1);
};
if (RM.object.health <= 0) {
mobsRed.splice(r, 1);
};
BM.object.attackTime = 0;
RM.object.attackTime = 0;
};
BM.object.attackTime = BM.object.attackTime + 1;
RM.object.attackTime = RM.object.attackTime + 1;
};
BM.Draw(ctx, false, true, "blue");
RM.Draw(ctx, false, true, "red");
};
};
};
'我的問題是,當我在數組中改變一些對象的屬性,他們也改變我的基礎對象變量和整個兩個數組中的所有其他對象 - 你能具體嗎? – thefourtheye
閱讀編輯,用'one'替換'some' – user4876138