码迷,mamicode.com
首页 > 其他好文 > 详细

arguments.callee实现深拷贝

时间:2020-01-18 16:14:50      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:png   function   alt   mic   else   text   一个   java   数组   

最近正在看一个腾讯课堂里面的学习视频中的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实现深拷贝

标签:png   function   alt   mic   else   text   一个   java   数组   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!