👨🏻💻JavaScript浅拷贝与深拷贝 发表于 2017-10-22 | | 本文总阅读量 次 👨🏻💻JavaScript浅拷贝与深拷贝原理 在JavaScript中一般简单类型是按值传递的;object与array是引用传递(就是传递地址,而不是值) 1234567891011var a = 'tom';var b = a;b = 'chen';console.log(a); // 'tom'var a = { name: 'tom'};var b = a;b.name = 'chen';console.log(a.name); // 'chen' 浅拷贝:只是保存拷贝值的地址,修改源对象会改变新对象的值1234567function extendCopy(p) { var c = {}; for (var i in p) { c[i] = p[i]; } return c;} 深拷贝:得到一个新的对象,修改新对象的属性不会影响原来的对象123456789101112function deepCopy(newObj, copyObj) { var newObj = newObj || {}; for (var i in copyObj) { if (typeof copyObj[i] === 'object') { newObj[i] = (copyObj[i].constructor === Array) ? [] : {}; deepCopy(newObj[i], copyObj[i]); } else { newObj[i] = copyObj[i]; } } return newObj;} 坚持原创技术分享,您的支持将鼓励我继续创作! 赏 微信打赏 支付宝打赏