一、进程和线程

以打开chrome.exe为例

1.双击Chrome图标,就会运行Chrome.exe文件
2.开启Chrome进程,作为主进程
3.主进程会开启一些辅助过程,如网络服务、CPU加速,这些是线程
4.每新建一个网页,就有可能开启一个子进程

https://www.huaweicloud.com/articles/d90c9bf248c8f1731946d65786c95379.html

二、浏览器的功能

1.发起请求,下载html,解析html,下载css,解析css,渲染界面,下载js,解析js,执行js
2.功能模块:用户界面,渲染引擎,js引擎,存储
3.功能模块一般处于不同的线程

js是单线程的,因为每个页面只能打开一个js线程 DOM操作慢,因为跨线程

三、JS引擎

功能

1.编译:用js代码翻译为机器能执行的字节码或机器码
2.优化:改写代码,使其更高效
3.执行:执行上面的字节码或机器码
4.垃圾回收:把js用完的内存回收,方便之后再使用

js在内存中运行

image.png

阴影部分

1.作用

  • 用来存储数据
  • 不存在变量名,变量名在【不知什么区】
  • 每种浏览器的分配规则不一样

2.stack(栈)和Heap(堆)
stack:每个数据顺序存放
heap:每个数据随机存放
3.举例

  1. var a=1;
  2. var b=1;
  3. var person={
  4. name:'frank',
  5. child:{
  6. name:'jack'
  7. }
  8. }
  9. var person2=person
  10. person2.name='x'
  11. console.log(person.name) //x

image.png

  • 数据分两种,对象和非对象,非对象在stack中,对象存储在heap

    四、js世界

    1.js所需要的东西

  • Window,由浏览器提供

  • console(控制台)
  • document
  • 对象Object
  • 数组Array
  • 函数Function

    2.window内存图

    微信图片_20210711000046.jpg

    3.原型链

    ```javascript var obj={} obj.toString()

//obj有一个隐藏属性,存储了Object.prototype对象的地址,包括有toString

var obj2={} obj2.toString() ``` obj1和obj2的关系

  • 都可以调用toString
  • 地址不同

image.png