解释 JS 封装多态
封装:
- 封装的目的是将信息隐藏,一般来说封装包括封装数据、封装实现。
- 封装数据:依赖作用域来实现封装数据。
- 封装实现:封装实现即隐藏实现细节,用户都不关心它的内部实现,使用者只需要知道如何使用即可。
多态:
- JS对象多态性是与生俱来的。
- 给不同的对象发送同一个消息时,这些对象会根据这个消息分别给出不同的反馈。
谈一谈进程和线程
进程和线程:
- 进程:程序的一次执行, 它占有一片独有的内存空间。
- 线程: 进程内的一个独立单元,CPU的基本调度单位, 是程序执行的一个完整流程。
对比:
- 一个进程中一般至少有一个运行的线程: 主线程。
- 一个进程中也可以同时运行多个线程, 我们会说程序是多线程运行的,多个线程数据直接共享,多个进程之间的数据是不能直接共享的。
事件轮询机制
代码分类:
- 同步代码:绑定事件、设置计时器,for循环等等。
- 异步代码:事件回调函数,计时器回调函数,ajax回调函数。
JS先执行同步代码,再执行异步代码。
事件模型的主要组成部分:
- 事件管理模块。
- 回调队列。
事件轮询过程:
- 先执行同步代码,将异步代码的回调函数交给事件管理模块管理。
- 事件管理模块中的事件发生了,就会把回调函数交给回调队列(callback queue)。
- 当同步代码执行完毕之后,会遍历回调队列中的函数执行(event Loop)。