克隆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之旅 对象的原型链之由来
Aug 25 Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
Feb 17 Javascript
基于 Node.js 实现前后端分离
Apr 23 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
小程序两种滚动公告栏的实现方法
Sep 17 Javascript
微信小程序 scroll-view的使用案例代码详解
Jun 11 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php实现webservice实例
2014/11/06 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
十一个高级MySql面试题
2014/10/06 面试题
运动会广播稿200字
2014/01/15 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
大学新闻系求职信
2014/06/03 职场文书
苏州园林导游词
2015/02/03 职场文书
酒店辞职书范文
2015/02/26 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
运动会通讯稿200字
2015/07/20 职场文书
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技