如果array .prototype.slice()方法返回浅拷贝,为什么改变切片数组的值不会改变原始数组
If Array.prototype.slice() method returns shallow copy why does changing the value of sliced array does not change the original
Array.prototype.slice()方法文档中说
slice()方法返回一个数组部分的浅拷贝到一个新的数组对象中。
如果是这样的话,为什么修改array .prototype.slice()返回的数组不会改变原始值呢?
> a = [1, 2, 3]
[ 1, 2, 3 ]
> b = a.slice(0)
[ 1, 2, 3 ]
> b[0] = 4
4
> b
[ 4, 2, 3 ]
> a // the expected output should be the same as output of b if b is shallowcopy of a.
[ 1, 2, 3 ]
当试图修改数组a时,可能正在进行写时复制。如果是这样,从技术上讲,是否可以说Array.prototype.slice()确实返回浅拷贝?a.slice的结果是一个新的数组,它不是指向初始变量的指针。
相关文章:
- d3.根据数组内容改变各个节点的颜色
- 从中删除元素后,javascript 数组的长度不会改变
- Javascript排序的数组会改变窗口对象,但在遍历它时不会改变
- 保持数组的顺序,但改变索引的位置
- JavaScript数组随着DOM的改变而改变
- 在函数内改变JavaScript数组
- Ng-repeat与指令:如何销毁重复项目后,数组已经改变
- 为什么数组'的长度属性'的值改变,即使在javascript中设置为只读
- 我如何使一个按钮改变Javascript数组位置
- Knockout:在改变可观察数组后设置select的标题
- 在不改变整个状态的情况下改变state数组(REACT / REDUX)
- 为什么knockoutjs js不't更新视图,如果一些子数组被改变
- Javascript array. prototype.sort()无意中改变了数组
- 根据数组中对象的数量改变id (javascript/jquery)
- Javascript数组一起改变
- react.js在改变状态数组后不更新DOM
- 如何改变传递给函数的数组,而不需要在javascript中迭代它的项
- KnockoutJS:模板不会在可观察数组改变时更新(只在添加时更新,在删除时有效)
- 如何使用jQuery和图像数组改变#header的css属性
- 数据绑定-在Javascript中数组改变时更新有序列表