当我遇到一些奇怪的东西时,我正在玩JavaScript中的一些数组.这是我的代码:
var origArray = new Array("one","two","three","four","five","six","seven","eight");
var newArray = origArray.slice(1,3);
origArray[1] = "octopus";
console.log(newArray.join()); //prints two,three
var origArray = new Array(["one","two"],["three","four"],["five","six"],["seven","eight"]);
var newArray = origArray.slice(1,3);
origArray[1][0] = "octopus";
console.log(newArray.join()); //prints octopus,four,five,six
Run Code Online (Sandbox Code Playgroud)
我不明白为什么newArray在第二种情况下受影响而不是第一种情况.这里发生了什么?
这是浅拷贝和深拷贝之间的区别.
slice结果是另一个对象而不是原始对象,但这并不意味着数组中的对象(一直向下)是重复的.如果这些内部对象恰好是数组,则它们在副本和原始对象之间共享.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |