javascript多维数组值复制疑问?

js数组赋值给另外一个数组变量是引用赋值,要实现值传递可以使用循环赋值、concat、slice。但是多维数组赋值,只有循环赋值靠谱,slice和concat都不靠谱了,哪个大神能否给个详细的解释,小弟感激不已。
var a = [1,2,3];
var b = a;
a.pop();
console.log(b);  //1,2
/*=====================*/
var a = [[1,2],[2]];
var b = a.concat();
a[0][1] = 22;
console.log(b);  //[[1,22],[2]]
//这种复制方法很靠谱
Object.prototype.clone = function() {
    var o = this.constructor === Array ? [] : {};
    for (var e in this) {
        o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];
    }
    return o;
};
阅读 2.3k
2 个回答

你需要深拷贝

能看一下你的concat、slice相关代码吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题