克隆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入门知识简介
Mar 04 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
Aug 18 Javascript
jquery获取url参数及url加参数的方法
Oct 26 Javascript
JS &amp; JQuery 动态添加 select option
Jun 08 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
Aug 08 Javascript
vue模仿网易云音乐的单页面应用
Apr 24 Javascript
layer 刷新某个页面的实现方法
Sep 05 Javascript
Layer+Echarts构建弹出层折线图的方法
Sep 25 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 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/03/04 日漫
php简单分页类实现方法
2015/02/26 PHP
php微信公众平台开发类实例
2015/04/01 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
原生js实现验证码功能
2017/03/16 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
应届生程序员求职信
2013/11/05 职场文书
高中军训感言200字
2014/02/23 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
走进敬老院活动总结
2014/07/10 职场文书
岗位职责说明书模板
2014/07/30 职场文书
抢劫罪辩护词
2015/05/21 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏