版权声明:有错误希望指正,谢谢! https://blog.csdn.net/wenpeng12/article/details/71069461
javascript中的对象的深拷贝
关于Javascript的对象的深浅拷贝网上有很多的说明文档。
详见:js深拷贝和浅拷贝
下面说明下我遇到的业务场景,由于框架的限制,在每次打开模态页面的时候,框架会自动将我赋予模态页面的对象的属性改变,而框架对于属性的名称是严格要求的。
var checkBoxObj = {
'text':'aaa',
'value': '1'
}
(对象一)
改变后:
var checkBoxObj = {
'name':'aaa',
'value':'1'
}
(对象二)
这样第一次模态页面的打开是正常的,但是第二次打开后就会造成,对象属性就会不识别。框架仍然希望我传进来的是(对象一)这种形式,
但是第一次模态页面的打开已经造成了对象属性名称的改变,所以造成原来对象的丢失。所以采用对象的深拷贝解决这个问题。每次传给模态页面的是一个拷贝的对象,这样就保留了原来的对象。
以下是拷贝代码部分:
/**
* 对象的拷贝。
* 入参:原对象,作为副本不变。
*/
cloneFun:function (obj){
function Clone(){}
Clone.prototype = obj;
var o = new Clone();
for(var a in o){
if(typeof o[a] == "object") {
o[a] = cloneFun(o[a]);
}
}
return o;
}