---
url: https://sugarat.top/offer/review/01-19.md
---

# 01-19

## 模拟实现

1. 实现Promise.all

```js
// 要求：必须等全部都resolved或者reject才返回
// 有一个reject就走catch
// 返回数组:（包括每一个resolved/reject的内容）
// 返回的数组结果对应的顺序与传入的promise顺序一致
function PromiseAll(){

}
```

2. 简单实现一个深拷贝

```js
// 对象只考虑普通对象与数组

// 有兴趣自己探究一 如下特殊场景如何满足
// 特殊场景 循环引用/Date/Regex/Symbol/函数

function deepClone(obj){

}
```

3. ES5实现函数的继承

## 理论

1. 几种常见for循环的区别与不足之处 (for,for of,for in ,foreach)
2. 什么是深拷贝，什么是浅拷贝？
3. generator与async/await有什么关系
4. 如何实现generator的自动调用
5. new一个对象做了什么（讲述一下new的原理）

## 事件相关

1. 什么是事件委托
2. 事件的回调函数 e.target与.currentTarget分别指向谁

## 朋友们的回答

* [tl](https://juejin.cn/post/6919313083500494856/)
* [tdk](https://www.cnblogs.com/dark-duck/p/14305622.html)
