Js深度克隆对象(对象的属性含有对象数组)
来源:互联网 发布:英雄382美工钢笔 编辑:程序博客网 时间:2024/06/06 08:44
这个方法当时在做项目时写的,应用在easyui的Tree组件中。
后台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对象深度克隆实现
- js对象的克隆
- js克隆对象或数组
- JAVA对象的深度克隆
- JAVA对象的深度克隆
- JavaScript的对象深度克隆
- JS:若对象数组中的某个对象含有某个属性-值对,则输出这个对象
- 常见数据类型的克隆(内含对象的深度克隆)
- JS对象简单、深度克隆(赋值与引用的区别)
- JS对象简单、深度克隆(赋值与引用的区别)
- Java对象深度克隆
- Windows驱动_USB驱动之三
- 《C++程序设计语言》读书笔记
- 12403 - Save Setu
- java设计模式(二):2.3责任链(返回链)
- 算法导论-第2章
- Js深度克隆对象(对象的属性含有对象数组)
- C#简单画图
- HDU 1892 二维树状数组
- 算法导论-第3章
- 数字转换为大写文字数字的代码.
- nyoj 6 喷水装置(一)
- 丑小鸭的故事
- 十六周项目1
- 第七章--快速排序