数组 JavaScript 的副本

copy of an array JavaScript

本文关键字:副本 JavaScript 数组      更新时间:2023-09-26

我有一些对象:

var obj1 = new Obj1(),
    obj2 = new Obj2(),
    ...

和两个数组:

objecs.push(obj1, obj2,...);
defaultObjects.push(obj1, obj2, ...);

在游戏循环期间,objects数组会发生变化,但defaultObjects不会。当游戏需要重新启动时,我需要使objects等于defaultObjects(就像开始时一样)。如果我这样做:

objects = defaultObjects.slice(0)

这是否意味着objects[0]defaultObjects[0]现在指向同一个对象obj1,但objectsdefaultObjects之间没有连接,所以我得到了我需要的东西?

这是

正确的。 slice将返回一个新数组。
但是,正如您提到的,数组元素仍将引用相同的对象。即从一个数组更改任何对象将导致它在另一个数组中的变化。