标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。