摸底准备
八股第一部分
instanceof的原理
答:instanceof用于检测构造函数prototype属性是否出现在某个实例对象的原型链。
它会检查右边构建函数的原型对象(prototype),是否在左边对象的原型链上。
手写
1 | function myInstanceof(Obj, constructor) { |
new的原理
使用new
命令时,它后面的函数依次执行下面的步骤。
- 创建一个空对象,作为将要返回的对象实例。
- 将这个空对象的原型,指向构造函数的
prototype
属性。 - 将这个空对象赋值给函数内部的
this
关键字。 - 开始执行构造函数内部的代码。
手写
1 | function myNew(constructor, ...args) { |
js作用域的理解
原型链
[Js中prototype、[prototype]]和__proto__的区别和用法-CSDN博客
this指向问题
八股第二部分react
hooks的使用限制
通用限制
为什么React Hooks会有两条使用规则 - 掘金 (juejin.cn)
- 只能在只能在函数组件的顶层使用或自定义Hooks中使用
- 不能再条件语句中使用
一些反例
- 在条件/循环语句中使用 Hooks:
1 | function MyComponent() { |
- 在嵌套函数中使用 Hooks:
1 | function MyComponent() { |
- 在类组件中使用 Hooks:
1 | class MyComponent extends React.Component { |
- 在普通 JavaScript 函数中使用 Hooks:
1 | function myFunction() { |
具体限制
- useState的值不能直接修改
- useEffect的回调函数中不能使用异步函数
- useContext必须再useContext所对应的Context.Provider中使用
react hooks的原理
函数组件和闭包
react setState是同步还是异步/react的批量更新机制
答:可能是同步也可能是异步,取决于执行环境