浅拷贝: 拷贝对象的一层属性,如果对象里面还有对象,拷贝的是地址, 两者之间修改会有影响,适用于对象里面属性的值是简单数据类型的.
深拷贝: 拷贝对象的多层属性,如果对象里面还有对象,会继续拷贝,使用递归去实现.
浅拷贝: var obj = { class: 'UI', age: 20, love: 'eat' } function getObj(obj) { var newObj = {} for (var k in obj) { newObj[k] = obj[k] } return newObj } var obj2 = getObj(obj) console.log(obj2)
深拷贝: var obj = { class: '前端', age: 26, love: { friuts : 'apple', meat: 'beef' } } function getObj(obj) { var newObj = {} for (var k in obj) { /* if (typeof obj[k] == 'object') { newObj[k] = getObj(obj[k]) } else { newObj[k] = obj[k] } */ newObj[k] = typeof obj[k] == 'object' ? getObj(obj[k]) : obj[k] } return newObj } var obj2 = getObj(obj) console.log(obj2)