克隆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 处理 URL 的两个函数代码
Aug 13 Javascript
帮助避免错误的Javascript陷阱清单
May 31 Javascript
javascript时间函数基础介绍
Mar 28 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
原生js实现移动端瀑布流式代码示例
Dec 18 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
Sep 27 Javascript
node事件循环和process模块实例分析
Feb 14 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
js的with语句使用方法
2007/09/21 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python多线程操作实例
2014/11/21 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python样条插值的实现代码
2018/12/17 Python
Python3数字求和的实例
2019/02/19 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
会计自荐信范文
2014/03/09 职场文书
入党申请书怎么写?
2019/06/11 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js