深拷贝与浅拷贝(针对井字棋游戏讲解)
文章目录
一、js中两种类型二、本例
一、js中两种类型
1.值类型:值类型的复制仅是对值的复制,如下图,对于b的改变a不变,即只是值的复制
引用类型:(借下图讲解)相当于a开辟了一个空间,空间里面存了相关数据,b通过’b=a‘也指向了那个房子,而不是简单的值的复制,所以b的改变引起了a的改变 2.类型包括:Array,Object
二、本例
如下:这里的game只是取出了his的第0项,然后game改变的同时,his数组第0项也会发生改变 如对其进行concat复制操作时:发现并不是将一条新的记录添加到了原有数组上,而是连同原数组一同做了改变,这应该就是所谓的浅拷贝,即会改变原始数组的值, 为了解决这一问题,引入了深拷贝,即js的slice方法。slice 方法会返回一个新的 Array 对象,这个新的数组与原数组是不同的地址,所以即使game改变也影响不到history数组,样例
共有 0 条评论