// 深克隆(克隆时间、正则、dom元素等)
function deepClone(obj) {
if(typeof obj != 'object') {
return;
}
let newObj = obj instanceof Array ? [] : {};
for (let key in obj) {
if(obj.hasOwnProperty(key)) {
if(obj[key] instanceof Date) {
newObj[key] = new Date(obj[key].getTime());
} else if (obj[key] instanceof RegExp) {
newObj[key] = new RegExp(obj[key]);
} else if (typeof obj[key] === 'object' && obj[key].nodeType === 1) {
let domEle = document.getElementsByTagName(obj[key].nodeName)[0];
newObj[key] = domEle.cloneNode(true);
} else {
newObj[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key];
}
}
}
return newObj;
}
// 测试
let obj = {
a: 1,
b: {
f: 3
},
c: function() {
console.log(1)
},
date: new Date(),
parent: /\d/g,
dom: document.querySelector('.traffic-light')
}
let obj1 = deepClone(obj);
obj1.a = 3;
console.log(obj, obj1)
深拷贝(递归)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...