自己重新写了一个JavaScript的对象克隆函数
作者:yemoo 来源:ajaxbbs 时间:2008-08-03 16:47:00
前段时间在网上找了一个“完美的”JavaScript对象克隆的函数,感觉还不错,但随后便出现了一些问题,发现这个克隆并不好用,在使用发现了如下缺陷:
1、直接为object原型扩展了方法,导致所有的object都多了一个objectClone方法,这样在使用反射取一个object的接口时就不准确了,这个一些网友也做了评论提到这个问题,不过这个问题好办,我把他变成一个全局函数就ok了,但还有下面的问题。
2、对于数组元素的克隆存在很大的问题。如var a={a:1,b:'xxx',c:[]}克隆后的对象编程{a:1,b:'xxx',c:[[]]},这个问题导致我的程序后来出现了很多莫名奇怪的问题,郁闷死,后来调试发现这个问题,真是非常之郁闷。
之余以上两点原因,我决定还是自己写一个,好在这个实现起来也并不麻烦。
代码如下:
/*克隆函数,传入要克隆的对象*/
var objClone=function(orgin){
var obj={};
if(typeof orgin=="object"){
var cb=arguments.callee;
if(orgin instanceof Array){
for(var i=0,obj=[],l=orgin.length;i<l;i++){
obj.push(cb(orgin[i]));
}
return obj;
}
for(var i in orgin){
obj[i]=cb(orgin[i]);
}
return obj;
}
return orgin;
}
这次我没敢再写到object的原型上,还是独立函数比较好。此外在实际中可以对objClone改名,因为内部的递归调用采用varguments.callee。
如果那位朋友觉得有用,就拿去把。
标签:函数,对象,javascript
0
投稿
猜你喜欢
一种特别简单的MySQL数据库安装方法
2008-12-17 15:30:00
asp+ajax版四级联动菜单(数据库)
2009-07-03 15:40:00
ASP 验证码的程序及原理
2010-04-24 15:56:00
如何创建SQL Server 2000故障转移群集
2009-02-13 17:18:00
sql2005与sql200数据导入导出
2009-03-13 13:16:00
Js中的函数直接量
2007-12-21 19:15:00
sql基本查询语句介绍
2008-05-21 13:58:00
sqlserver 触发器学习(实现自动编号)
2012-10-07 10:58:03
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效
2011-03-15 23:03:00
js自定义网页右键菜单方法
2007-11-28 12:50:00
mysql proxy问题
2009-02-27 15:54:00
ASP SCRIPT: 计数器(使用GrapShot组件)
2008-11-07 15:36:00
ASP+SQLServer2000 经验积累
2008-02-03 15:16:00
用ASP和SQL实现基于Web日历源码
2010-04-24 15:52:00
解决ASP执行DB查询中的特殊字符问题
2008-09-02 12:16:00
全兼容的纯CSS级联菜单要点浅析
2009-06-10 14:42:00
浅析MySQL数据库授权原则
2009-12-15 09:21:00
oracle 常用的几个SQL
2009-12-01 12:36:00
绿色下划线的简洁CSS导航代码
2007-09-17 12:51:00
Dreamweaver MX网页图片热区使用方法
2008-05-20 12:50:00