怎么在JavaScript中引用vs复制

  介绍

本篇文章为大家展示了怎么在JavaScript中引用vs复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

let  age =, 18;   时间=let  age2 年龄;   console.log(年龄,age2);

我们会得到以下的值:

18 18

这个相信大家都能很好理解。

那么如果我们改年龄的变值呢?输出会有什么变化?

age =, 20;   console.log(年龄,age2);

我们会得到:

20 18

看到这里大家就奇怪了,上面的结果都很正常啊。

但在JavaScript中是有例外的,对于普通数据类型如整数、字符串、布尔可以通过=来复制这个变量,但对于数组和对象数据类型,=只能起到引用的效果。

大家可以看下面这个例子:

let  arr =,(& # 39;韦斯# 39;,,& # 39;鲍勃# 39;,,& # 39;摊贩# 39;];   let  arr2 =,加勒比海盗;   console.log (arr2, arr);   arr[2],=, & # 39;院长# 39;;   console.log (arr2, arr);

得到的结果是:

[“wes",“bob",“faker"] [“wes",“bob",“faker"]
(“wes",“bob",“dean"] [“wes",“bob",“dean"]

我们会发现随着arr的改变,arr2也会跟着改变。

说明arr2并没有复制arr的值,只是引用了它,它们都指向同一个内存中的值。

对象也是一样的:

let  obj =, {   ,年龄:19岁   ,名字:& # 39;像# 39;   ,最后:& # 39;果酱# 39;   };   let  obj2 =, obj;   console.log (obj, methoda);   时间=obj.age  50;   console.log (obj, methoda);

得到的结果是:

{姓名:年龄:19日“like",最后:“jam"}{姓名:年龄:19日“like",最后:“jam"}
{年龄:50岁的名字:“like",最后:“jam"}{年龄:50岁的名字:“like",最后:“jam"}

<强>那么如何复制数组和对象呢?

复制数组的方法:

方法1:

let  arr2 =, [] .concat (arr);

方法2:

let  arr2 =, arr.slice ();

方法3:

let  arr2 =, Array.from (arr);

方法4:

let  arr2 =, arr […];

一般我们比较常用的是方法3和方法4、方法1和方法2比较取巧,但都是可以达到复制数组的目的的。

<>强ps: […arr)是ES6中的方法。

复制对象的方法:

方法1:

let  obj2 =, Object.assign ({}, obj);

方法2:

let  obj2 =, {…obj};

方法1和方法2都有个缺点,它们只会复制对象的第一层。

看下面这个例子:

let  obj =, {   ,数量:12   ,名字:{   ,,第一:& # 39;鲍勃# 39;   最后才能:& # 39;邪恶# 39;   ,}   };   let  obj2 =, Object.assign ({}, obj);   时间=obj.number  50;   console.log (obj, methoda);

我们会得到下面的结果:

obj={
,,,数量:50,
,,,名称:{
,,,,,,,第一:& # 39;鲍勃# 39;,
,,,,,,,最后:& # 39;邪恶# 39;
,,,}
}

methoda={
,,,数量:12个,
,,,名称:{
,,,,,,,第一:& # 39;鲍勃# 39;,
,,,,,,,最后:& # 39;邪恶# 39;
,,,}
}

但如果我们改变第二层的值:

obj.name.first =, & # 39;山姆# 39;;   console.log (obj, methoda);

obj={
,,,数量:50,
,,,名称:{
,,,,,,,第一:& # 39;山姆# 39;,
,,,,,,,最后:& # 39;邪恶# 39;
,,,}
}

methoda={
,,,数量:12个,
,,,名称:{
,,,,,,,第一:& # 39;山姆# 39;,
,,,,,,,最后:& # 39;邪恶# 39;
,,,}
}

上述内容就是怎么在JavaScript中引用vs复制,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

怎么在JavaScript中引用vs复制