说到 javascript 中的对象拷贝,首先我们想到的是 Object.assign() , JSON.parse(JSON.stringify()) , 还有 ES6 的展开操作符[... ]
因为在...js 中= 运算符 对于对象来说,不能创建副本,只是对该对象的引用
运算符
var x = {
a: 1,
b: 2,
};
y = x;
x.a = 10;
console.log(x);...//{a:5, b:2, c:{d:10}}
console.log(y); //{a:5, b:2, c:{d:10}}
此时就发现坑了,那么已经证明了 Object.assign() 只是实现了对象的浅拷贝...Object.assign() 还需要注意的一点是,原型链上属性的不可枚举对象是无法复制的,看一下代码:
var x = {
a: 1,
};
var y = Object.create(x, {...ECMAScript 的第 3 阶段提案, 拷贝对象更加简单了
var x = [
"a",
"b",
"c",
"d",
{
e: 1,
},
];
var y