我在javascript编码,我需要创建一个具有多个子对象的对象,这些子对象将保存相同的命名变量。当我试图将值推送到一个子对象时,其他人也会得到它。我在浏览器控制台中模拟了以下行为:
object = {};
numbers = [0,1];
letters = ["a","b"]
fruits = ["peach", "pineapple"]
object.subObject1 = { numbers , letters , fruits };
object.subObject2 = { numbers , letters , fruits };
object.subObject1.numbers.push(3);
console.log(object.subObject2.numbers);
OUTPUT: [0, 1, 3]
所以,当我推入array1子对象时。它也会转到array2子对象,因为很明显数字数组是通过引用传递的。我的问题是,我该如何做到这一点,以便他们保留子对象数组属性名称('数字')但是按值传递数组?
答案 0 :(得分:2)
试试这段代码。
LocalSystem
切片显然会调用基于前一个数组为对象创建一个新数组,而不仅仅是作为引用传递。