js 对象浅拷贝和深拷贝
2016-10-30 00:53
204 查看
var model={name:"boy",age:13}; var CopyModel=model; console.log(CopyModel.name); model.name="girl"; console.log(CopyModel.name);
输出值:
CopyModel复制model对象,修改model对象,再输出CopyModel对象,结果却是修改后model对象的值,为什么会这样?
"="就是浅拷贝,浅拷贝指向的内存都是同一个内存的地址:
model和CopyModel的值指向的是同一个内存。
而我们并不需要这样的浅拷贝,深拷贝是在内存中开辟一个新的内存地址:
1.JSON.parese(JSON.stringify(model));(这个实现的缺点是不能拷贝对象中的方法,而且连方法都会丢失。)
var CopyModel=JSON.parse(JSON.stringify(model));
2.通过JQuery的extend对象
var CopyModel=$.extend(true, {}, model);
相关文章推荐
- js对象深拷贝的简单实现
- js对象的深拷贝问题
- js实现的对象深拷贝
- js对象深拷贝
- 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝
- JS的继承是从一个对象原型向另一个对象原型的简单拷贝
- js对象浅拷贝和深拷贝详解
- 使用slice方法进行js对象拷贝 得到新的对象 不再互相干扰 解决引用变量的指向问题
- JS数组和对象的深拷贝
- js实现对象深度拷贝
- js对象深拷贝和对象扩展
- js 对象深拷贝
- JS 对象引用和深拷贝
- js实现的对象深拷贝
- JS面向对象组件(五) -- 复制对象(拷贝继承)
- js数组及对象的深拷贝
- JS对象的浅拷贝与深度拷贝
- js对象或json对象深拷贝
- 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝
- 由于js对象浅拷贝导致的遍历出错