说到 javascript 中的对象拷贝,首先我们想到的是 Object.assign() , JSON.parse(JSON.stringify()) , 还有 ES6 的展开操作符[... ]
因为在...value: 3,
enumerable: true,
},
});
var z = Object.assign({}, y);
console.log(z); //{c:3}
拿到 z 的值很让人意外...,因为 x 是 y 的原型链,所以 x 不会被复制
属性 b 是不可枚举属性,也不会被复制
只有 c 具有可枚举描述,他可以被枚举,所以才能被复制
以上的坑也可以很好的被解决,且往下看:
深拷贝 JSON.parse...>)
at anonymous>:8:25
*/
报错了,其结果表明 JSON.parse(JSON.stringify()) , 不能拷贝循环引用对象
再来看看 Object.assign...}, x);
console.log(x);
/*
[object Object]{
a:1,
b:[object, Object],
d:[object, Object],
d:1
}
*/
使用展开操作符