Javascript:如何在重新分配后保留对对象中断的引用?

问题描述 投票:0回答:1

我为该帖子的标题而苦苦挣扎。因此,让我们深入研究代码:

var arr = [1,2,3];
var obj = {a: 1, b: 2, c:3};

function func(val) {
  setInterval(function(){
    console.log(val);
  }, 3000);
}

func(arr);
func(obj);

setTimeout(()=>{
    arr[0] = 9;
  obj.a = 9;
}, 3000);

setTimeout(()=>{
    arr = [9,8,7];
  obj = {a: 9, b: 8, c:7};
}, 3000);

JSFiddle:https://jsfiddle.net/lyquix/obxLa3pe/

当我对元素/属性进行更改时,保留了setInterval对arrobj的引用,但是当我为arrobj分配新的数组/对象时,它会“中断”。 >

我的问题是:

如何进行这样的赋值,实质上是在不破坏引用的情况下替换对象的所有数据?有标准功能或符号吗?还是我需要先“擦除”数组/对象,然后重新填充元素/属性?

类似:

while(arr.length) {arr.pop();}
for(let key in obj){delete obj[key];}

然后重新填充...

我为该帖子的标题而苦苦挣扎。因此,让我们深入研究代码:var arr = [1,2,3]; var obj = {a:1,b:2,c:3};函数func(val){setInterval(function(){console.log(val);},...

javascript
1个回答
0
投票

您可以使用盒子模式来实现。

© www.soinside.com 2019 - 2024. All rights reserved.