Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组中切片对象后,切片对象将在何时销毁并从内存中删除?_Javascript - Fatal编程技术网

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。该对象是否因为某个人仍然持有该对象的引用而未被销毁?只要变量指向某个内容,该内容就会保留。