JS世界

107 阅读2分钟

进程

进程(Process),程序的执行过程.

开机说起,开机时主板通电运行主板上的固件的开机程序,然后把操作系统加载到内存运行.操作系统则会运行一系列服务进程.

浏览器运行

浏览器运行

打开Chrome浏览器,任务管理器会显示Chrome的主进程和之下的子进程.

进程.png

Chrome的任务管理更详细

进程1.png

浏览器的功能

浏览器能够发请求,下载解析HTML和CSS,下载解析执行JS.

而实现这些功能利用了三个功能模块:用户界面,渲染引擎和JS引擎.

渲染引擎之前渲染树介绍过了,JS引擎有编译,优化,执行,垃圾回收的功能.

那么这些引擎在工作的时候会创建新的进程吗?答案是不会,他们属于线程.是进程之下更小的存在,而进程之间又互不干扰.

那么如果JS引擎希望改变样式,就需要向渲染引擎发出指令,这就叫跨线程,这会耗费校对的性能

内存图

如下图,红色区域分为stackheap,他们是存放数据的区域.stack中每个数据有着固定的位数,且按顺序排放.而heap中随机排放,因为对象有增删改查的操作.如果要增加的对象与其他对象发生了冲突,那么删掉要增加的对象重新随机开辟内存.

赋值操作,如var a = b; 等于号在内存的栈区域进行了复制的操作,复制了值或者地址,仅此而已.所以才会造成篡改属性的结果

内存图.png

原型链

什么是原型,每个对象都有__proto__属性,它就存放了该对象原型的地址 全局对象Window中存放了console,Array,Object等的地址. 由于两次的地址转移,所以无法篡改原型中的属性.

156b3506fabf38b615b3c5f5699c5f1.jpg