Js深度克隆对象(对象的属性含有对象数组)
2013-06-16 19:18
447 查看
这个方法当时在做项目时写的,应用在easyui的Tree组件中。
后台Java对象结构:List<TreeObj>
js代码:
调用;
在网上找到这个办法,但好像不能克隆带对象属性的数组,目前我还没对他进行过测试。
后台Java对象结构:List<TreeObj>
public class TreeObj { private String id; private String text; private List<TreeObj> children = new ArrayList<TreeObj>(); private String state ; private String iconCls; private Object attributes ; private boolean checked = false; }
js代码:
//克隆树数据对象 function clone(targetList,childrenList,cloneList){ for(key in targetList){ //----取值 start-------------------------------------------------------- var obj = targetList[key]; var newObj = {}; newObj.id = obj.id; newObj.text = obj.text; newObj.state =obj.state; newObj.checked = obj.checked; var attr = {};attr.parentNode ="";attr.nodeHeirdomRelation = ""; if(obj.attributes){ if(obj.attributes.parentNode){ attr.parentNode = obj.attributes.parentNode ; } if(obj.attributes.nodeHeirdomRelation){ attr.nodeHeirdomRelation = obj.attributes.nodeHeirdomRelation ; } } newObj.attributes = attr; //---取值 end--------------------------------------------------------- if(childrenList){childrenList.push(newObj);}//保存子节点成员 if(obj.children != null && obj.children.length>0){ var newList = new Array();//保存当前节点的子节点 clone(obj.children,newList,cloneList); newObj.children = newList; } if(/^rl_.*$/.test(obj.id.toLowerCase())){//从根部开始保存 cloneList.push(newObj);//保存根节点 } } }
调用;
clone(源数组,null,克隆后);
在网上找到这个办法,但好像不能克隆带对象属性的数组,目前我还没对他进行过测试。
Object.prototype.Clone = function(){ var objClone; if (this.constructor == Object){ objClone = new this.constructor(); }else{ objClone = new this.constructor(this.valueOf()); } for(var key in this){ if ( objClone[key] != this[key] ){ if ( typeof(this[key]) == 'object' ){ objClone[key] = this[key].Clone(); }else{ objClone[key] = this[key]; } } } objClone.toString = this.toString; objClone.valueOf = this.valueOf; return objClone; }
相关文章推荐
- js 对象深度克隆
- js深入研究之克隆,属性,数组,对象,函数
- js对象的深度克隆!
- js对象深度克隆
- js深度克隆对象
- js-对象深度克隆方法
- js判断json对象中是否含有某个属性
- JS学习30:对象简单、深度克隆(复制、Clone)
- 属性名不一致的对象深度克隆
- js 判断对象数组中是否包含某个属性的值和对象转化成数组
- 【JavaScript代码实现三】JS对象的深度克隆
- JS中判断对象是否含有某个属性的方法
- js中对象深度克隆,以及ES6中的深度克隆的实现
- JS对象简单、深度克隆(赋值与引用的区别)
- js对象的深度克隆
- JS对象深度克隆
- 对JS克隆以及相关属性,数组,对象,函数的实例分析
- ****ife 递归实现深度克隆(内含JS数据类型判断,对象遍历)****
- js对象简单、深度克隆(复制)
- JS中判断对象是否含有某个属性的方法