1、对象赋值
两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。
2、浅拷贝
浅拷贝:只进行一层关系的拷贝。
循环遍历对象
function shallowClone(o){
let obj={}
for(let key in o){
obj[key]=o[key]
}
return obj
}
Object.assign(target,source)
let a={name:'xxxx'}
let b=Object.assign({},a)
b.name='hhhh'
console.log(a.name); //"xxxx"
ES6
let a={name:'xxxx'}
let b={...a}
b.name='hhhh'
console.log(a.name); //"xxxx"
3、深拷贝
深拷贝:在浅拷贝的基础上,进行多层遍历拷贝。
手写递归
function deepCopy(source){
if (typeof source != "object") {
return source;
}
if (source == null) {
return source;
}
var newObj = source.constructor === Array ? [] : {}; //开辟一块新的内存空间
for (var i in source) {
newObj[i] = deepCopy(source[i]); //通过递归实现深层的复制
}
return newObj;
}
JSON.stringify()
function cloneJSON(source) {
return JSON.parse(JSON.stringify(source));
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!