自己重新写了一个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
投稿
猜你喜欢
session的存储方式和配置方法介绍
2022-04-28 05:48:59
Python入门教程之Python的安装下载配置
2021-08-18 06:01:14
在 Linux/Mac 下为Python函数添加超时时间的方法
2023-08-17 14:27:12
Python中 join() 函数的使用示例讲解
2023-03-29 02:32:25
爱你就要说出来,来表白吧
2008-11-23 16:23:00
PyQt5+python3+pycharm开发环境配置教程
2022-11-03 03:34:11
《JavaScript语言精粹》译者序及样章试读
2009-04-03 11:38:00
Python两台电脑实现TCP通信的方法示例
2023-09-07 04:17:34
CSS 针对 Safari(WebKit)的 CSS 注意事项 3
2008-09-15 18:36:00
SQLServer 2008中通过DBCC OPENTRAN和会话查询事务
2024-01-13 15:35:55
Matlab常用的输出命令disp与fprintf解读
2022-03-18 17:13:58
浅谈Go中数字转换字符串的正确姿势
2024-05-08 10:51:42
pycharm中jupyter的使用图文教程
2023-10-01 13:36:11
python opencv实现图像矫正功能
2022-05-22 17:00:13
ASP编程入门进阶(十一):Chat聊天程序
2008-05-12 07:06:00
jQuery渐变发光导航菜单的实例代码
2024-04-09 19:47:36
Python开发的HTTP库requests详解
2021-09-06 19:08:09
如何在golang中使用shopspring/decimal来处理精度问题
2024-05-21 10:24:12
Python列表排序 list.sort方法和内置函数sorted用法
2022-01-18 01:01:47
Python内置函数property()如何使用
2022-12-07 07:04:28