【问题标题】:Can Someone Explain whats happening with overwriting variables有人可以解释覆盖变量会发生什么吗
【发布时间】:2015-06-25 21:57:46
【问题描述】:
var Minion = {};
var player = {};

function newGame():void
buildMinion();
buildPlayer();
trace(player.m1.minionName); // traces "Minion Two" ?!
}

我不明白为什么 (player.m1.minionName) 会被 (player.m2.minionName) 覆盖。我显然做错了什么,想了解是什么。

buildMinion():void
{
Minion.minionName = "Default";
}

buildPlayer():void
{
player.m1 = Minion;
player.m2 = Minion;
player.m1.minionName = "Minion One";
player.m1.minionName = "Minion Two";
}

【问题讨论】:

    标签: actionscript-3 object overwrite


    【解决方案1】:

    请仔细阅读您的代码

    改变这个

    player.m1.minionName = "Minion One";
    player.m1.minionName = "Minion Two";
    

    到这里

    player.m1.minionName = "Minion One";
    player.m2.minionName = "Minion Two";
    

    【讨论】:

      【解决方案2】:

      player.m1.minionName = "Minion Two";

      你这里有一个错字。这应该是@DodgerThud 指出的player.m2.minionName。但是,即使您将其更改为m2,它仍然不能作为player.m1player.m2 都引用同一个Minion 对象。因此,您对其中一个所做的任何更改都会反映在另一个中。您需要为它们使用单​​独的对象。像这样的:

      var Minion1 = {};
      var Minion2 = {};
      
      player.m1 = Minion1;
      player.m2 = Minion2;
      

      由于Minion1Minion2 都是空对象,如果其他地方不需要这些临时变量,您可以删除它们。

      player.m1 = {}
      player.m2 = {}
      

      【讨论】:

        猜你喜欢
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-16
        • 2020-12-24
        相关资源
        最近更新 更多