原型
在 JavaScript 中,每个对象都有一个原型(prototype)。原型是一个对象,其他对象可以通过它来继承属性和方法。简单来说,对象通过其原型来共享和访问属性和方法。
原型以原型链的形式连接在一起,形成了一个对象和原型之间的关系。当我们访问对象的属性或方法时,JavaScript 引擎首先在对象本身查找,如果找不到,则会沿着原型链向上查找,直到找到对应的属性或方法,或者到达继承链的顶端(即 Object.prototype)。
使用原型链的好处是可以节省内存,因为多个对象可以共享相同的属性和方法。这种属性和方法的共享是通过将它们定义在原型对象上实现的。
事件循环
在执行一段JavaScript代码时,主线程同步执行,自上而下。在过程中如果遇到异步任务,则会将该任务放入到任务队列中等待执行。
当主线程中的这段JavaScript代码执行完成后,JavaScript引擎会检查任务队列是否有未执行的任务,如果有则按照先进先出的顺序执行队列中的任务
而任务队列又有不同的分类,不同的分类之间又有着不同的执行权重,
浏览器中输入一个url后会发生什么
- 解析URL:浏览器会解析用户输入的URL,确定请求的目标服务器和资源路径。
- 建立TCP连接:使用HTTP协议,浏览器会与目标服务器建立TCP连接。这包括解析主机名、执行DNS查询以获取服务器的IP地址,并通过三次握手建立可靠的连接。
- 发起请求:浏览器向目标服务器发送HTTP请求。这包括指定请求方法(GET、POST等)、资源路径、请求头部(如User-Agent、Cookie等)和请求体(对于POST请求)。
- 服务器处理请求:目标服务器接收到请求后,会根据请求的内容和服务器端的配置进行相应的处理。这可能包括读取文件、执行脚本、查询数据库等。
- 服务器发送响应:服务器处理完请求后,会生成HTTP响应。响应包括响应状态码(如200表示成功、404表示未找到等)、响应头部(如Content-Type、Cache-Control等)和响应体(返回的实际数据)。
- 接收响应:浏览器开始接收从服务器返回的响应数据。这些数据根据响应头部中的Content-Type进行解析,如文本、JSON、HTML、图像等。
- 处理响应:根据响应的内容类型,浏览器会执行相应的处理操作。例如,如果是HTML页面,浏览器会解析HTML、构建DOM树,并将其渲染为可视化的网页。
- 渲染页面:浏览器会将解析的HTML、CSS和JavaScript代码生成渲染树,并通过布局计算和绘制操作将页面呈现给用户。
- 断开TCP连接:在所有响应数据都处理完毕后,浏览器会关闭与目标服务器的TCP连接,释放相关的资源。