克隆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 相关文章推荐
从URL中提取参数与将对象转换为URL查询参数的实现代码
Jan 12 Javascript
FusionCharts图表显示双Y轴双(多)曲线
Nov 22 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
js实现分割上传大文件
Mar 09 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
Sep 17 Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
vue proxy 的优势与使用场景实现
Jun 15 Javascript
JS sort排序详细使用方法示例解析
Sep 27 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
PHP 进程锁定问题分析研究
2009/11/24 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
php工具型代码之印章抠图
2018/07/18 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
Laravel find in set排序实例
2019/10/09 PHP
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
Ionic快速安装教程
2016/06/03 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
Python的函数嵌套的使用方法
2014/01/24 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python中获取对象信息的方法
2015/04/27 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
数控专业推荐信范文
2013/12/02 职场文书
出生医学证明样本
2014/01/17 职场文书
会计人员岗位职责
2014/03/19 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
PHP基本语法
2021/03/31 PHP
python 中的@运算符使用
2021/05/26 Python
Go语言设计模式之结构型模式
2021/06/22 Golang
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技