1.用户输入网址(假设是个 html 页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回 html 文件;
2.浏览器开始载入 html 代码,发现< head >标签内有一个< link >标签引用外部 CSS 文件;
3.浏览器发出 CSS 文件的请求,服务器返回这个 CSS 文件;(同时 GUI 渲染线程继续执行,互不影响)
4.浏览器继续载入 html 中< body >部分的代码,并且 CSS 文件已经拿到手了,开始渲染页面;
5.浏览器在代码中发现一个< img >标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
6.服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
7.浏览器发现了一个包含一行 Javascript 代码的< script >标签,直接运行;
8.Javascript 脚本操作某个元素,它命令浏览器隐藏掉代码中的某个标签 (style.display=”none”)。浏览器会重新渲染这部分代码;
9.遇到 </html >,流程结束;
10.当用户操作,页面产生交互,浏览器发现某个部分发生了点变化影响了布局,浏览器回流(reflow);改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,浏览器重绘(repaint)。
原型链
构造函数的prototype属性指向它的原型对象,实例的_proto_指向它构造函数的原型对象,当构造函数a的原型对象等于构造函数b的实例时,就形成了 a.prototype-b._proto_-b.prototype,若b的原型对象又等于另一个实例,这样层层递进形成原型链