克隆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 自动完成脚本整理(33个)
Oct 20 Javascript
用jquery实现输入框获取焦点消失文字
Apr 27 Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
Jul 27 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
JavaScript中双向数据绑定详解
May 03 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 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+Html+缓存
2006/12/20 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
关于python中导入文件到list的问题
2020/10/31 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
保险经纪人求职信
2014/03/11 职场文书
《老山界》教学反思
2014/04/08 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技