方法一
function clone(obj){
var o;
switch(typeof obj){
case 'undefined': break;
case 'string' : o = obj + '';break;
case 'number' : o = obj - 0;break;
case 'boolean' : o = obj;break;
case 'object' :
if(obj === null){
o = null;
}else{
if(obj instanceof Array){
o = [];
for(var i = 0, len = obj.length; i < len; i++){
o.push(clone(obj[i]));
}
}else{
o = {};
for(var k in obj){
o[k] = clone(obj[k]);
}
}
}
break;
default:
o = obj;break;
}
return o;
}
方法二
function clone2(obj){
var o, obj;
if (obj.constructor == Object){
o = new obj.constructor();
}else{
o = new obj.constructor(obj.valueOf());
}
for(var key in obj){
if ( o[key] != obj[key] ){
if ( typeof(obj[key]) == 'object' ){
o[key] = clone2(obj[key]);
}else{
o[key] = obj[key];
}
}
}
o.toString = obj.toString;
o.valueOf = obj.valueOf;
return o;
}
方法三
function clone3(obj){
function Clone(){}
Clone.prototype = obj;
var o = new Clone();
for(var a in o){
if(typeof o[a] == "object") {
o[a] = clone3(o[a]);
}
}
return o;
}
分享到:
相关推荐
克隆javascript对象的三个方法整理,需要的朋友可以参考下。
java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)
nanoclone - 只有145B实现深度克隆JavaScript对象
主要介绍了JS对象的深度克隆方法,结合实例形式分析了JavaScript深度克隆的实现技巧,需要的朋友可以参考下
深度克隆对象,不过效率没有显示的new对象快,不过很安全
clone()方法示例(对象克隆)。作者: 初生不惑
Ext的两种克隆的方法: 可以克隆对象、数据等:var newJson = Ext.clone(json); 只能克隆数组:var newJson = Ext.Array.clone(json); JQuery的方法: 深复制【可以迭代】:var newJson = jQuery.extend(true,{}, ...
主要介绍了JS对象深度克隆,结合实例形式分析了JavaScript对象深度克隆的实现方法与相关注意事项,需要的朋友可以参考下
Java对象的复制与克隆,包含浅复制和深层复制。 免费下载啦,绝对值得一看。
对象复制工具,基于cglib BeanCopier 实现对实体对象、持久化对象、代理对象的克隆和复制, 避免重复克隆和复制,避免无限循环引用,(校验hashCode) 可指定实体对象和集合属性的克隆深度
031111_【第11章:Java常用类库】_对象克隆技术笔记
C#中Clone一个对象的值到另一个对象案例 c#经典案例.pdf
克隆标签克隆标签克隆标签
一个用于对象深度克隆的同构和可配置javascript函数
深度克隆JavaScript对象(包括其直接原型),而不会无意间从全局原型中复制方法和值。 还可以在新创建的对象中复制循环关系。 安装 npm install smartclone 用法 var smartClone = require ( "smartclone" ) ; var...
首先,将通过基于令牌的快速而轻量级的方法来提取一些代码克隆的候选对象。 然后,将使用可找到各种代码克隆的基于树的方法来更精确地检查选定的候选对象。 开发了原型系统。 该系统接受源代码并在第一步中对其进行...