克隆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 相关文章推荐
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
Apr 25 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
详解js中==与===的区别
Jan 08 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
Angular resolve基础用法详解
Oct 03 Javascript
js拖动滑块和点击水波纹效果实例代码
Oct 16 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 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
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP的几个常用加密函数
2016/02/03 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python 类之间的参数传递方式
2019/12/20 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
初任培训自我鉴定
2013/10/07 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
优秀高中学生评语
2014/12/30 职场文书
物业工程部岗位职责
2015/02/11 职场文书
个人总结怎么写
2015/02/26 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
音乐研修感悟
2015/11/18 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书