浅拷贝
将 原数据 对象拷贝到 新数据 对象中,但不包括 原数据 里面的子对象
代码实例
// 原数据
let y = {
'name': 'zhangsan',
'age': '18',
// 原数据中的子对象
'language': [1, [2, 3], [4, 5]],
};
// 创建第二个对象 把原数据赋值给它
let f = y;
// 创建对象 对 元数据 进行拷贝
let c = shallowCopy(y);
// 开始进行拷贝
function shallowCopy(this) {
// 创建对象
let dst = {};
// 将每个数据都给到 dst 变量
for (let i in this) {
dst[i] = this[i];
}
return dst;
}
// 改变赋值中的 name 会改变原始数据
f.name = "lisi";
// 浅拷贝的改变只会让自己的数据发生变化
c.age = "20";
// 改变原数据赋值的变量 也会改变原数据
f.language[1] = ["二", "三"];
// 浅拷贝只是复制一层对象,不包括里面的对象 所以会使 原数据发生变化
c.language[2] = ["四", "五"];
// 原始数据
console.log(y);
//y = {
// 'name' : 'lisi',
// 'age' : '18',
// 'language' : [1,["二","三"],["四","五"]],
//};
// 赋值操作得到的
console.log(f);
//f = {
// 'name' : 'lisi',
// 'age' : '18',
// 'language' : [1,["二","三"],["四","五"]],
//};
// 浅拷贝得到的
console.log(c);
//c = {
// 'name' : 'zhangsan',
// 'age' : '20',
// 'language' : [1,["二","三"],["四","五"]],
//};