javascript构造函数深度克隆递归
2024-09-02 08:32:57
<script type="text/javascript">
var obj={
name:'段丛磊',
gex:18,
sss:['李伟',18],
fun:function(){
name='李伟'
gex=18
}
}
var obj1={};
var init=function(right1,left1){
var left1=left1||{}, //当用户传入的有东西就用用户提供的,没有就自己给一个{}对象
toStr=Object.prototype.toString,//判断是对象还是数组的call改变this指向
arrStr='[object Array]';//数组
for (var opo in right1) { //遍历
if (right1.hasOwnProperty(opo)) //不继承系统的值
{
if (right1[opo]!=='null' && typeof(right1[opo])=='Object') //判断是不是引用值
{
if (toStr.call(right1[opo])==arrStr) //判断是不是数组
{
left1[opo]=[];
}
else
{
left1[opo]={};
}
init(right1[opo],left1[opo]) //递归
}
else{
left1[opo]=right1[opo]; //出口
}
}
}
return left1;//当我没有传这个的时候
}
init(obj,obj1);
</script>
最新文章
- Redis之清除所有缓存
- LabVIEW如何调用C#Winform
- 如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)
- 30行代码实现Javascript中的MVC
- 免信用卡注册美国App Store账号
- ANDROID_MARS学习笔记_S01原始版_012_广播机制一
- HJA的异或值
- HTML5 Security Cheatsheet使用说明
- .NET中的CSV导入导出(实例)
- mysql错误:Error Code: 1175. You are using safe update mode and you tried to update a table……
- MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字
- 1-git初体验
- 浅谈javascript的函数节流
- 数位DP入门:(bzoj1833+3209)
- 程序员必须搞清的概念-equals和=和hashcode的区别
- python操作git
- 前端基本知识(三):JS的闭包理解(第一个思考题有错误,已修改)
- Python-常见面试题-持续更新
- Linux下设置redis的密码和远程访问
- recovery uncrypt功能解析(bootable/recovery/uncrypt/uncrypt.cpp)