从对象复制一个值(值是一个对象)到数组是不起作用的。
在JavaScript中,当将一个对象赋值给数组时,实际上是将对象的引用存储到数组中。这意味着数组中的每个元素都指向同一个对象,而不是复制对象的值。
例如,考虑以下代码:
let obj = { name: "John" };
let arr = [];
arr.push(obj);
obj.name = "Jane";
console.log(arr[0].name); // 输出 "Jane"
在这个例子中,我们将obj
对象添加到arr
数组中。然后,我们修改了obj
对象的name
属性。由于数组中存储的是对象的引用,所以在访问数组中的元素时,我们实际上访问的是同一个对象,因此输出结果为"Jane"。
如果想要将对象的值复制到数组中,可以使用Object.assign()
方法或扩展运算符(...
)来创建一个新的对象,并将其添加到数组中。例如:
let obj = { name: "John" };
let arr = [];
arr.push(Object.assign({}, obj));
obj.name = "Jane";
console.log(arr[0].name); // 输出 "John"
在这个例子中,我们使用Object.assign()
方法将obj
对象的值复制到一个新的空对象中,并将该新对象添加到arr
数组中。由于数组中存储的是新对象的引用,所以在修改obj
对象的name
属性后,数组中的元素保持不变,输出结果为"John"。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云