克隆javascript对象的三个方法小结


Posted in Javascript onJanuary 12, 2011

方法一

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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
Javascript绝句欣赏 一些经典的js代码
Feb 22 Javascript
jQuery弹性滑动导航菜单实现思路及代码
May 02 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
js中自定义react数据验证组件实例详解
Oct 19 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 Javascript
js+canvas绘制图形验证码
Sep 21 Javascript
JavaScript中两种链式调用实现代码
Jan 12 #Javascript
Chrome中JSON.parse的特殊实现
Jan 12 #Javascript
js中将字符串转换成json的三种方式
Jan 12 #Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
Jan 12 #Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 #Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 #Javascript
Script的加载方法小结
Jan 12 #Javascript
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
php 移除数组重复元素的一点说明
2008/11/27 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
PHP错误处理函数
2016/04/03 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python threading的使用方法解析
2019/08/28 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
法制宣传日活动总结
2014/04/29 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
赤壁观后感(2)
2015/06/15 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
Go语言特点及基本数据类型使用详解
2022/03/21 Golang
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏