使用数组和切片的奇怪行为

Set*_*hen 4 javascript

当我遇到一些奇怪的东西时,我正在玩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在第二种情况下受影响而不是第一种情况.这里发生了什么?

Ant*_*nko 6

这是浅拷贝深拷贝之间的区别.

slice结果是另一个对象而不是原始对象,但这并不意味着数组中的对象(一直向下)是重复的.如果这些内部对象恰好是数组,则它们在副本和原始对象之间共享.