关于return对象的问题


图片描述


 这个例子是找队友,如果是队友的放到partners要是敌人的话就放到enemies里,
他这里191行下把队友添加到一个数组对象下面,
为什么他在198行下return返回当前对象时却是数组对象players下面存的值,
这里的player1,player2,player3下的partners:Array不应该全为[0]吗?
也没看哪句代码把队友push到了newPlayer下去啊,这里全都是放在players下去了,这是怎么回事?是对象的地址引用吗?

jquery JavaScript javascript面向对象

miko籽 9 years, 8 months ago

我怀疑你是不是眼睛不太好使……

为什么他在198行下return返回当前对象时却是数组对象players下面存的值

你说的数组对象 players 下面的值那是在 197 行的时候 inline 打印出来的,这是因为 197 行里 players 调用了 .push 方法,自己去看该方法的返回值是什么

而 198 行的 return 就是返回 newPlayer 而已,所以你上面那句问话前言不搭后语,只能让我觉得你眼神不好使。

后面的问题就更莫名其妙了,191 行明明有 push,为什么应该全为 [0]

hmhm answered 9 years, 8 months ago

楼主的代码中在创建一个新玩家的时候, 是将当前的玩家添加到 同一队玩家 partners 中,

所以你的 player3 player7 partners 个数都为 0 (因为它们都是该队里最后创建的,所以还会有后来的人,添加到它们的 partners 中).

原因 在于没有将同一队的玩家添加到新建的玩家的 partners 中(但却有将不是同一队的玩家添加到 enemies 中, 所以所有的玩家的 enemies 数据是正确的, 但 partners 却不正确 2,1,0 ).

要修正这个问题,只需要像 194 行那样, 在 191 行的后面加上 newPlayer.partners.push(player); 即可.

关于你的 也没看哪句代码把队友push到了newPlayer下去啊,这里全都是放在players下去了,这是怎么回事?

197 行就是将新创建的 玩家 添加到 players 中.

elzzird answered 9 years, 8 months ago

Your Answer