实现一个功能完整的简易 Promise
需求:
- 满足 promise 规范,和原生一样的使用方式
- 支持 .then()
- 支持链式调用
js
function deepClone(target) {
if (target === null) return target
// JS内置对象 基础类型不需要深拷贝
if (target instanceof Date) return new Date(target)
if (target instanceof RegExp) return new RegExp(target)
if (typeof target !== 'object') return target
// 初始化返回结果
let result
if (Array.isArray(target)) {
result = []
} else {
result = {}
}
// 处理 和 递归
for (let key in target) {
if (target.hasOwnProperty(key)) {
return result[key] = deepClone(target[key])
}
}
return result
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22