ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js深浅拷贝方法

2021-09-17 17:58:33  阅读:148  来源: 互联网

标签:obj log js startObj 深浅 var console 拷贝 objCopy


var obj = {
	a:'hello',
	b:{
		a:'world',
		b:111
	},
	c:[11,'jack','Tom']
}

是从慕课网一门叫直面JavaScript中的30个疑难杂症的视频里看到的特此记录下
浅拷贝:

//方法1
function simpleClone(objNew){
	var obj = {}
	for(var i in objNew){
		obj[i]=objNew[i]
	}
	return obj
}
var objCopy = simpleClone(obj)
objCopy.b.a = 'NOhello'
console.log(objCopy)
console.log(obj)
//方法2
var objCopy = Object.create(obj)
objCopy.b.a = 'NOhello'
console.log(objCopy)
console.log(obj)

深拷贝:

//方法1
function deepClone(startObj,endobj){
	var obj = endobj || {}
	for(var i in startObj){
		if(typeof startObj[i]==='object'){
		obj[i]=	startObj[i].constructor===Array?[]:{}// 再次判断其构造函数是数组的构造函数还是对象的构造函数
		 deepClone(startObj[i],obj[i])
		}else{
			obj[i]=startObj[i]
		}
	}
	return obj
}
var objCopy = deepClone(obj)
objCopy.b.a = 'NOhello'
console.log(objCopy)
console.log(obj)
		
//方法2
JSON.parse,JSON.stringify
 var objCopy = JSON.parse(JSON.stringify(obj)) 
 object->string
 objCopy.b.a = 'NOhello'
 console.log(objCopy)
 console.log(obj)

标签:obj,log,js,startObj,深浅,var,console,拷贝,objCopy
来源: https://blog.csdn.net/qq_43226883/article/details/120353847

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有