克隆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 相关文章推荐
javascript下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
jQuery的强大选择器小结
Dec 27 Javascript
javascript 文章截取部分无损html显示实现代码
May 04 Javascript
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
Feb 16 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
Jun 13 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
微信小程序富文本渲染引擎的详解
Sep 30 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
Dec 25 Javascript
JS高级技巧(简洁版)
Jul 29 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
js实现简易计算器功能
2019/10/18 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
wxPython 入门教程
2008/10/07 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python实现微信远程控制电脑
2018/02/22 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python爬取微信公众号文章的方法
2019/02/26 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
python TCP包注入方式
2020/05/05 Python
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
大学毕业的自我鉴定
2013/10/08 职场文书
关于运动会的口号
2014/06/07 职场文书
工厂车间标语
2014/06/19 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
思想品德课教学反思
2016/02/24 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers