本篇文章为大家展示了怎么在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复制