JS知识体系构建--持续更新
来源:互联网 发布:stussy淘宝 编辑:程序博客网 时间:2024/06/12 19:39
1、单线程、执行栈,任务队列、回调函数
在此声明,此图为网上拷贝,原作者不详,在此表示对原作者的敬意。
单线程: js只有一个处理任务的线程,称为主线程。一个线程在同一时间只能处理一个任务。说到底,js在同一时间只能执行一个任务。因为JS运行在浏览器中,是单线程的,每个window一个JS线程。
执行栈:用于存放将要被执行的函数或代码。这样说并不准确,详情参考Stack栈、JavaScript变量——栈内存or堆内存
任务队列: Event Loop,异步的代码在处理完成后会将回调函数添加到任务队列。
回调函数:事件处理完成后才执行的函数。
平台代码:引擎或者环境和Promise的实施代码,也就是他们内部的代码的逻辑或者叫处理任务的逻辑。
js它可以调用平台的API。JS线程,只是平台分配的多个线程中的一个,因此,浏览器的行为中JS线程只是其中一部分,用来与用户交互,因此,JS线程不是一个人在战斗,当我处理不过来的时候,我就用webAPI告诉平台“兄弟,来帮我整一下这个”,平台干完了那一部分,就将剩余的部分(回调函数)给JS线程”:哥们儿,我把我把部分搞完了哈,其他的你自己慢慢弄!”。这时候,JS线程有可能还在忙活其他的事情,平台把剩余的部分放在等待区(任务队列)就走了。等js线程空了,“耶,这兄弟搞得快哦,任务没完成,算了,今天不能回家陪美娇娘了,继续干活儿。”它又把任务队列的任务拿过来继续敲打,循环往复,直到所有事情干完为止。
这里讲完了js线程怎么干活,可是平台拿到异步任务怎么处理的呢。macro-task,micro-task,理解不深,不敢随便发言,以后更新。
2、this
- 构造函数中的this:要解释这个this,就要搞清楚构造函数创建实例的时候都经历了那些步骤。
- 1、new操作符创建了一个新的空对象{}
- 2、将这个构造函数的执行的作用域绑定到新对象
- 3、执行构造函数
- 4、将实例的
constructor
属性指向构造函数,将实例的_proto_
属性指向原型 - 5、返回新对象
结论:因此这里的this指向的是实例
- JS知识体系构建--持续更新
- JS知识整理(持续更新)
- 思维导图构建Linuxt体系(持续更新)
- 构建知识体系
- java知识体系构建
- 机器人知识体系构建
- 牛客-html&css&js-知识汇总(持续更新)
- 随想-自动构建知识体系
- 构建开发者的知识体系
- 构建知识体系,规划职业生涯
- js总结-持续更新。。。。。
- 收集小知识 持续更新...
- android小知识(持续更新)
- 持续更新 风机相关知识
- 知识补充(持续更新)
- 如何做总结来构建知识体系
- 构建知识体系之一--PHP代码规范
- 构建完整知识体系的读书计划
- 文件上传,表单提交插件
- Android混合开发
- tip7——activity的4种启动模式
- 算法与数据结构绪论
- spring 事件驱动模型简介
- JS知识体系构建--持续更新
- 优化MyEclipse保存页面卡顿
- MySQL基本操作
- 返回值为结构体,返回值可能为空时候的处理情况
- SylixOS_LWIP协议栈学习:动态内存管理
- Protobuf3语言指南
- nginx 根据不同url反向代理到不同服务器
- angular$http.post后台不能获取参数的问题
- android activity启动的时候隐藏软键盘