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";
}
答案 0 :(得分:1)
请仔细阅读您的代码
更改此
player.m1.minionName = "Minion One";
player.m1.minionName = "Minion Two";
到这个
player.m1.minionName = "Minion One";
player.m2.minionName = "Minion Two";
答案 1 :(得分:1)
player.m1.minionName = "Minion Two";
你这里有一个错字。这应该是@DodgerThud指出的player.m2.minionName
。但是,即使您将其更改为m2
,它仍然无法用作player.m1
和player.m2
两者都引用相同的Minion
对象。因此,您在一个中所做的任何更改都将反映在另一个中。您需要为它们使用单独的对象。像这样:
var Minion1 = {};
var Minion2 = {};
player.m1 = Minion1;
player.m2 = Minion2;
由于Minion1
和Minion2
都是空对象,如果在其他地方不需要它们,您可以删除这些临时变量。
player.m1 = {}
player.m2 = {}