- A+
所属分类:Web前端
将 原数据 对象拷贝到 新数据 对象中,但不包括 原数据 里面的子对象
代码实例
// 原数据 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,["二","三"],["四","五"]], //};