1. class转为es5
2. 冻结对象obj, const obj = { a: { b: { c: 1 } } };
// 递归执行,要领是先返回不符合要求的,在执行符合要求的,最后循环递归符合要求的。
function completeFreezeObj(obj) {
if (Object.prototype.toString.call(obj) !== "[object Object]") {
return;
}
Object.freeze(obj);
Object.keys(obj).forEach((item) => {
if (Object.prototype.toString.call(obj) !== "[object Object]") {
freezeObj(obj[item]);
}
});
}
3. js 数组的方法 sort方法
// 排序arr, 按照arr1第一个然后第二个排序
const arr = [
[1, 2],
[2, 1],
[3, 1],
[1, 1],
[2, 3],
];
arr.sort((arr1, arr2) => {
const [first1, secode1] = arr1;
const [first2, secode2] = arr2;
return first1 - first2 || secode1 - secode2;
});
4. promise的链式调用
5. promise的函数,promise.all(arr), promise.race, promise.all是并行的多个promise, 实现串行的promise.all
6. react之中为什么使用key
7. 原型和原型链
8. 事件循环,node/js
9. let, const, var
10. for ... of for ...in Object.keys()区别
11. react diff 算法
12 事件流程,事件委托
13. 节流,防抖
14. 箭头函数不能用作构造函数
15. 你了解promise吗?平时用的多吗?
promise.all 你知道有什么特性吗?所有promise全部执行完之后才会返回结果;报错了的话进入catch;如果有一个报错其他promise还会执行, promise是在实例化的时候就执行了(promise结果固定,请求常量 --- 全局状态管理/缓存)完了,then只是为了拿到结果
需要写两遍
Promise.resolve可以转为promise, 但是顺序不对
最终版本
promise缓存 -- 失效
promise.limit
promise.race
function myPromiseRace(promiseArr) {
// 如果传入的参数不是可迭代类型
if (promiseArr[Symbol.iterator] === undefined) {
return Promise.reject("params is not a iteratorable type")
}
// 转为数组进行遍历
promiseArr = Array.from(promiseArr);
return new Promise((resolve, reject) => {
for(let promise of promiseArr) {
promise.then(res=>{
resolve(res);
}).catch(err=>{
reject(err);
})
}
})
}
promise串行执行
let parallelPromises = promises.reduce( (total, currentValue) => total.then(() => currentValue.then(print)),Promise.resolve() )
sizeof