克隆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的几种方法
Oct 23 Javascript
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
Javascript 圆角div的实现代码
Oct 15 Javascript
jquery获取下拉列表的值为null的解决方法
Mar 18 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
前端jquery部分很精彩
May 03 Javascript
移动端界面的适配
Jan 11 Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
vue路由跳转传参数的方法
May 06 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 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小程序自动提交到自助友情连接
2009/11/24 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
Git命令之分支详解
2021/03/02 PHP
jQuery filter函数使用方法
2014/05/19 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
python中正则的使用指南
2016/12/04 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python 互换字典的键值对实例
2019/02/12 Python
详解Python3注释知识点
2019/02/19 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
python实现学生管理系统开发
2020/07/24 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
营业经理岗位职责
2013/11/10 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
民主评议党员总结
2014/10/20 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
学校教代会开幕词
2016/03/04 职场文书