我为该帖子的标题而苦苦挣扎。因此,让我们深入研究代码:
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对arr
和obj
的引用,但是当我为arr
和obj
分配新的数组/对象时,它会“中断”。 >
我的问题是:
如何进行这样的赋值,实质上是在不破坏引用的情况下替换对象的所有数据?有标准功能或符号吗?还是我需要先“擦除”数组/对象,然后重新填充元素/属性?类似:
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);},...
您可以使用盒子模式来实现。