克隆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 相关文章推荐
js jquery做的图片连续滚动代码
Jan 06 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
Sep 26 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 Javascript
Javascript进制转换实例分析
May 14 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
关于webpack代码拆分的解析
Jul 20 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
vue-cli3.0 环境变量与模式配置方法
Nov 08 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
vue实现匀速轮播效果
Jun 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
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
python字典get()方法用法分析
2015/04/17 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python http基本验证方法
2018/12/26 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
财务方面个人工作的自我评价
2013/12/28 职场文书
会计员岗位职责
2014/03/15 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
产品质量保证书范本
2015/02/27 职场文书
项目备案申请报告
2015/05/15 职场文书
校园安全教育心得体会
2016/01/15 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
合作合同协议书
2016/03/21 职场文书
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android