首页 > 其他 > 详细

arguments.callee实现深拷贝

时间:2020-01-18 16:12:54      阅读:84      评论:0      收藏:0      [点我收藏+]

最近正在看一个腾讯课堂里面的学习视频中的js知识点,然后有一个深拷贝的题,于是就做了一下,使用arguments.callee实现深拷贝。

<script type="text/javascript">
			var obj={
				"name":"小二",
				"age":18,
				"sex":"man",
				"grade":{
					"文综":{
						"历史":100,
						"政治":80
					},
					"理综":{
						"物理":87,
						"化学":68
					}
				},
				"hobby":[[1,1,5,4],[2,3,4,5],[8,7,9,8]]
			};
			var obj1={};
			//实现深拷贝
			function copyObject(o1,o2){
				var objc1=o1;
				var objc2=o2;
				for( prop in objc1){
					if(typeof(objc1[prop])+""!=="object"){
						//拷贝原始值
						objc2[prop]=objc1[prop];
					}else if(Object.prototype.toString.call(objc1[prop])+""==="[object Array]"){
						//拷贝数组
						objc2[prop]=[];
						arguments.callee(objc1[prop],objc2[prop])
					}
					else{
						//拷贝对象
						objc2[prop]={};
						arguments.callee(objc1[prop],objc2[prop])
					}
				}
				return objc2;
			}
			console.log(obj); //原对象
			console.log(copyObject(obj,obj1)); //拷贝后对象
		</script>

  

实现结果:

技术分享图片

arguments.callee实现深拷贝

原文:https://www.cnblogs.com/xiaojianwei/p/12209147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!