克隆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 相关文章推荐
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
利用JQuery直接调用asp.net后台的简单方法
Oct 27 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
Sep 25 Javascript
JavaScript canvas动画实现时钟效果
Feb 10 Javascript
js实现纯前端压缩图片
Nov 16 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
PHP4之真OO
2006/10/09 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php生成excel列序号代码实例
2013/12/24 PHP
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
Prototype Function对象 学习
2009/07/12 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python修改MP3文件的方法
2015/06/15 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Python类及获取对象属性方法解析
2020/06/15 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
会计学个人自荐信模板
2013/12/13 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
教师党员思想汇报
2014/01/06 职场文书
庆六一活动总结
2014/08/29 职场文书
经理聘任证明
2015/03/02 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis