let arr = [5, 4, 9, 8]
let obj1 = {
name: 'xxx',
sex: '男',
like: ['红色', '蓝色'],
book: {
title: 'js程序',
price: '88'
}
}
function deepClone(obj) {
//查看要拷贝的对象是数组还是对象,如果数组创建空数组,是对象创建空对象
let newObj = obj instanceof Array ? [] : {}
for (let k in obj) {
//K属性名 obj[k]值
//判断当前每个元素是否是对象或者数组
//如果还是对象,继续递归拷贝
//是值,直接添加到新创建的对象或者数组里
if (typeof obj[k] === 'object') {
//递归拷贝完 放入到新对象的属性
newObj[k] = deepClone(obj[k])
} else {
//否则是值, 直接添加到新建的 newObj中
newObj[k] = obj[k]
}
}
//返回新对象
return newObj
}
var obj2 = deepClone(obj1)
obj2.like.push('紫色')
obj2.book.price = 999
console.log(obj1);
console.log(obj2);
// JSON.stringify 简单粗暴
var origin_data = { a: 1, b: 2, c: [1, 2, 3] }
var copy_data = JSON.parse(JSON.stringify(origin_data))
origin_data.a = 3;
origin_data.b = 4;
origin_data.c[0] = '呵呵哒';
console.log(origin_data)
console.log(copy_data)
宏任务微任务
console.log(1);
setTimeout(() => {
console.log(2);
Promise.resolve().then(() => {
console.log(3)
});
});
//new 实例化的过程 是主程序
new Promise((resolve, reject) => {
console.log(4)
resolve(5)
}).then((data) => {
console.log(data);
})
setTimeout(() => {
console.log(6);
})
console.log(7); 1475236