js中对象克隆
一、对象克隆
//对象克隆函数clone(obj);
function clone(obj) {
let self = this;
let newData;//接受克隆数据
if(typeof obj === 'object') {
//typeof可以检测基本数据类型,但是在检测null的时候会把null检测为object,还有检测对象和数据的时候都检测为object,这时无法知道具体谁是谁;
if(obj === null) {
newData = null;
} else {
if(obj instanceof Array) {
//instanceof 可以检测复杂数据类型,但是检测基本数据类型报错
newData = [];
//遍历数组里面的每一项数据,里面的数据可能为基本或复杂数据类型,所以遍历时调用clone(obj)函数;
for(let i = 0,len = obj.length; i<len ;i++) {
newData.push(self.clone(obj[i]));
}
} else {
//不是null和数组,那就是对象类型
newData = {};
//遍历对象,里面的数据可能为基本或复杂数据类型,所以遍历时调用clone(obj)函数;
for(let key in obj) {
newData[key] = self.clone(obj[key]);
}
}
}
} else {
//不是object类型,那么就是基本数据类型或函数,直接赋值
newData = obj;
}
return newData;
}
let obj = clone([1, 'hello clone', { id: 1, name: '李四',children:[{id: 1,name: '张三'}] }]);
console.log(obj);
今天又学习了一个知识,冲。