掘友等级
获得徽章 0
高阶函数是指能够接受一个或多个函数作为参数,并返回一个新函数作为结果的函数。将函数作为数据进行操作,使得函数具有更高的抽象和灵活性,简而言之,高阶函数是能够操作其他函数的函数。
当我们用构造函数 people 实例化了一个对象 person
后,访问 person 的方法或者属性时,会先在实例
person 自身找有没有对应的方法属性。有值的话,则
返回值,没有的话则去 person.__proto
(people.prototype )里找;有值的话,则返回值,没有的话,又会去 People.prototype._proto.
(0bject.prototype)里找。有值的话,则返回值;
没有的话,又会去 Object.prototype._proto_ 里找,但是 Object.prototype._
_proto_
_ 返回null,原型链
到顶,一条条原型链搜索完毕,都没有,则返回
undefined
在查找的过程中会遍历以上的一条链,这条链就是原型链。
async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。
ref获取组件实例等,还有祖孙级别(provide/inject),属性透传和事件监听($attrs/$listeners),获取父子组件实例($parent/$children)
当通过调用外部函数返回的内部函数后,即使外部函数已经执行结束了,但是被内部函数引用的外部函数的变量依然会保存在内存中,我们把引用了其他函数作用域变量的函数和这些被引用变量的集合,称为闭包(Closure),闭包是这些东西共同的组合
vue中的ref和reactive区别:ref本身是必然会调用 reactive,所以ref底层一定是通过reactive实现的,针对不同的数据类型会进行操作,当你ref为 对象时会转换 reactive对象 将代理的对象 返回给 _value对象,如果是基本数据则会判断是否需要浅层复制,不需要则直接返回了。
而 reactive 这边也会判断 是不是 基本数据类型 是 直接返回 否则就直接将对象进行了代理并返回。
TCP的一些问题:
TCP顺序问题 后面的包先到达需要等待前面的包返回之后才可以继续传输 (队头阻塞问题)
慢启动的过程 非常消耗性能
time-wait 客户端连接服务器最后不会立即断开 在高并发 短连接的情况下 会出现端口全被占用 新的连接无法连入的情况
infer 关键字就是声明一个类型变量,当类型系统给足条件的时候类型就会被推断出来.
monorepo 架构的优势:
1、可以将一个大型项目,拆分成多个子项目,更容易维护和管理代码
2、提高代码共享和重用性,这些子项目可以共享代码和库,可以减少代码重复,降低维护成本
3、由于所有代码都在同一个代码库中,可以更容易地对代码进行构建和测试,有利于持续集成和持续交付
4、更方便的进行版本控制和管理,可以结合 changesets 类似的发布工具,跟踪代码的变更历史和版本变更
vite热更新:创建一个websocket服务端。
创建一个ws client文件,并在html中引入,加载ws client文件。
服务端监听文件变化,发送websocket消息,告诉客户端变化类型,变化文件等。
客户端接受到消息,根据消息内容决定重新刷新页面还是重新加载变化文件,并执行相关文件注入ws client时设置的hmr hook函数。
下一页