浅克隆
obj = {
name: 'hu_time',
age: 23,
sex: 'male'
}
var obj1 = {};
// 浅克隆
function clone(origin, target) {
var target = target || {};
for (let prop in origin) {
target[prop] = origin[prop]
}
}
clone(obj, obj1);
浅克隆克隆的对象信息在新的克隆对象中,对嵌套的数据还是会有有影响的
深克隆
obj = {
name: 'hhhh',
age: 23,
card: ['visa', 'master'],
wife: {
name: 'abc',
son: {
name: 'aaa'
}
}
}
obj1 = {}
function deepClone(origin, target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var prop in origin){
// 避免拿到原型链上的属性
if(origin.hasOwnProperty(prop)){
// 判断是否是对象
if(typeof(origin[prop]) == 'object'){
target[prop] = toStr.call(origin[prop]) == arrStr ? [] : {};
deepClone(origin[prop], target[prop])
}else {
target[prop] = origin[prop]
}
}
}
return target;
}
deepClone(obj, obj1);
VUE深克隆
JSON.parse(JSON.stringify(this.array))
遍历对象 for(var prop in obj)1.判断是不是原始值 typeOf() object
2.判断是数组还是对象 typeof() object 1.instanceof 2.tostring 3.construtor
3.建立相应的数组或对象
本文详细解释了浅克隆和深克隆的概念,通过具体的JavaScript示例代码展示了两种克隆方式的区别。浅克隆仅复制对象的第一层属性,而深克隆会递归复制所有层级的属性,包括嵌套的对象和数组。

269

被折叠的 条评论
为什么被折叠?



