Javascript 从对象数组中切片对象后,切片对象将在何时销毁并从内存中删除?
让我们用一个例子来理解-Javascript 从对象数组中切片对象后,切片对象将在何时销毁并从内存中删除?,javascript,Javascript,让我们用一个例子来理解- var arr = [{Property1: "obj1"}, {Property1: "obj2"}] var mappedReference = arr[0]; arr.splice(0, 1); //Removing first object from the array console.log(arr[0]); console.log(mappedReference); 控制台日志: 为什么变量mappedRe
var arr = [{Property1: "obj1"}, {Property1: "obj2"}]
var mappedReference = arr[0];
arr.splice(0, 1); //Removing first object from the array
console.log(arr[0]);
console.log(mappedReference);
控制台日志:
为什么变量mappedReference仍然保留引用以及如何销毁?您需要对数组进行相同的对象引用,然后再进行索引
var arr=[{Property1:obj1},{Property1:obj2}]
var mappedReference=arr;//作为对象引用的完整数组
阵列拼接(0,1);
console.log(arr[0]);
console.log(mappedReference[0]);//此处应用索引
它将从拼接
调用返回var removed=arr.splice(0,1)
此外,一旦分配var mappedReference=arr[0]
,对数组所做的任何操作都不会影响第一个索引处的对象。您可以删除arr[0]
,arr[0]=null
或arr.splice(0,1)
。因为变量,对象不能被垃圾收集。@adiga,是的,对象没有从内存中删除,因为有人仍然持有引用,这也是我在想的。是的,没错,但我的要求不是保存整个数组,而是保存特定的对象引用,当发生切片时,变量的引用将更新为null。该对象是否因为某个人仍然持有该对象的引用而未被销毁?只要变量指向某个内容,该内容就会保留。