首页 新闻 赞助 找找看

数组的继承问题

0
[已解决问题] 解决于 2012-04-19 13:59
var a = [1,2,3,4,5,6], b=a, c = b;

c[0]=11;
console.log(a[0]);

此时输出a[0],为什么也变成11了呢?

有没有办法让他还是保持他原来的值1?也就是让a,b,c各自独立。。

十年灯的主页 十年灯 | 菜鸟二级 | 园豆:356
提问于:2012-04-19 12:00
< >
分享
最佳答案
0

如果数组内存储的是简单类型使用b= a.slice(); c=a.slice();这时候进行了一次数据的复制操作,如果数组内是对象类型,复制的是其中对象引用,所以在对其中的对象进行操作的时候,共享的对象本身都会发生变化,但是单一的改变某一个数组内的引用不会改变其他数组的内容。

奖励园豆:5
zsounder | 老鸟四级 |园豆:2819 | 2012-04-19 12:20
其他回答(1)
1

数组是引用对象,我没法画图给你解释,这么说 a[0]原来指向1

b=a后  b将指向a对象引用的地址(所以此时修改b对象的值会影响a的值)

c = b 同理c--->b----a(修改c对象的值会影响a的值)也就是他们不是创建了新的对象而是引用堆中地址,共用一块内存区域,修改一个会影响同一区域的所有对象。

Halower | 园豆:1723 (小虾三级) | 2012-04-19 13:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册