Javascript 如何使变量引用与其他引用不同?

Javascript 如何使变量引用与其他引用不同?,javascript,Javascript,我正在制作一个口袋妖怪游戏,其中每个口袋妖怪都是一个对象,每个玩家、玩家和对手随机得到一个不同的口袋妖怪 var pokeArray = [fryno, snark, tucoret]; var playerPoke = rand(pokeArray); var oppoPoke = rand(pokeArray); rand是我制作的一个函数,用于从数组中随机选取一些内容 不管怎么说,问题是,当这两者恰好相同时,我会遇到问题, 假设两者最终都是fryno playerPoke = fryno

我正在制作一个口袋妖怪游戏,其中每个口袋妖怪都是一个对象,每个玩家、玩家和对手随机得到一个不同的口袋妖怪

var pokeArray = [fryno, snark, tucoret];
var playerPoke = rand(pokeArray);
var oppoPoke = rand(pokeArray);
rand
是我制作的一个函数,用于从数组中随机选取一些内容 不管怎么说,问题是,当这两者恰好相同时,我会遇到问题, 假设两者最终都是
fryno

playerPoke = fryno;
oppoPoke = fryno;
然后,当我损坏
oppoke
时,它实际上是在损坏
fryno
,因此
playerPoke
也会受到损坏,因为它也是
fryno

所以我想知道,即使
playerPoke
oppoPoke
fryno
,它们是否可以引用
fryno
的不同副本,而不是
fryno
本身 这样我就破坏了
oppoke
而不是
fryno

如果其中任何一项有意义,您应该创建对象的克隆。或者更好的是,实例化一些东西

function Pokemon(species) {
    // look up species data
    this.hp = speciesData[species].hp;
    this.atk = speciesData[species].atk;
    // and so on
}
然后:


在这种情况下,
pokerray
应该是一个物种名称数组,而不是一个对象数组。

您必须编写代码来复制基本对象。具体的工作方式取决于对象的性质。我建议您将其提升到一个新的级别,并使用实例化的对象来避免以具有相同攻击的多个口袋妖怪为目标,使口袋妖怪成为构造函数并创建其实例:
function Fryno(){…};playerPoke=new Fryno()嗯,大概数据一定来自某个地方,对吧?像原始问题中的
fryno
snark
tucoret
对象一样。
var playerPoke = new Pokemon(rand(pokeArray));