let a = {"foo": 99};
let b = a;
// console.log(b) {"foo": 99}
a.foo = 33;
// console.log(b) {"foo": 33}
我在上面的场景中了解到,如果我使用对象,引用原始对象的变量将反映原始对象的值。
但如果我用数组这样做:
let a = [1,2,3];
let b = a;
a = [99,99,99];
// console.log(b) [1,2,3];
多变的b
仍然引用原始值a
即使a
改变了,那么创建副本的人会通过什么方式slice()
serve?
这是因为,通过这样做a = [99, 99, 99]
,您正在创建一个全新的对象,并“重置”a
。但是做的时候a.foo = 33
,您正在修改现有对象及其引用。
你可以看到当我设置a[0]
代替a
, b
仍然等于a
:
let a = [1, 2, 3];
let b = a;
a[0] = [99, 99, 99];
console.log(b);
当使用slice()
方法,b
保留a
的原始值。
Example:
let a = [1, 2, 3];
let b = a;
a = a.slice(2);
console.log(a, b);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)