浅拷贝
- 浅拷贝、两个对象共用一个容器,当通过其中一个对象改变容器中的内容的时候,另一个对象的内容也会改变
var guiqi = { //站街面板level: 100,zb: {wuqi: '太极天帝剑',yifu: '大幽魂上衣',erhuan: '军神耳环'},power: 3000,zhili: 5000}var guiqi_linshi = guiqi; //进图面板guiqi_linshi.zhili += 30000;console.log(guiqi.zhili)
深拷贝
- 深拷贝 两个对象都有自己的容器,给第二个对象一个空的容器, 把对一个对象的容器里面的内容,通过for循环添加到第二个容器里面,两个对象都拥有独立的容器,当改变其中的一个对象的内容时,另一个对象不会受到影响。
var obj1 = {name: '王小明',age: 22,skill: ['刀魂之卡赞','瘟疫之罗刹','冥炎之卡洛','第七鬼神怖拉修']}var obj2 = {};for (var i in obj1) {obj2[i] = obj1[i]}obj2.name = '李小丽';console.log(obj1.name)console.log(obj2)console.log(obj2.name)console.log(obj1)obj2.skill[3] = '神官吉格降临';
封装深拷贝
var obj1 = {name: '王小明',age: 16,xueke: ['语文', '数学', '英语', '化学', '物理', '生物']}var obj2 = {}function deepClone(oldObj, newObj) {for (var i in oldObj) {if (typeof oldObj[i] == 'object') {newObj[i] = oldObj[i] instanceof Array ? [] : {}deepClone(oldObj[i], newObj[i])} else {newObj[i] = oldObj[i];}}}deepClone(obj1, obj2)
