likes
comments
collection
share

JS内存图和JS世界

作者站长头像
站长
· 阅读数 68

1、浏览器的功能:

发起请求,下载HTML,解析HTML,下载CSS,解析CSS,渲染界面,下载JS,解析JS,执行JS等。

2、浏览器的功能模块

用户界面、渲染引擎、JS引擎、存储等,这四个功能模块不是进程,是线程

  • 渲染引擎:解析HTML,解析CSS,渲染界面
  • JS引擎:解析JS,执行JS
  • 一个页面打开一个渲染引擎线程和一个JS引擎线程
  • JS是单线程的

为什么JS引擎会有渲染的效果?

  • 因为JS引擎会跨线程通信到渲染引擎,所以DOM操作慢,因为是跨线程操作,JS引擎跨越到渲染引擎

3、JS引擎的主要功能:

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

注意: window/document/setTimeout 不是JS提供的,是浏览器提供给JS的功能,我们把这些功能称为运行环境(runtime env)

4、内存图

  • stack栈

    1. 特点:每个数据顺序存放
    2. 用于存放非对象:数字、字符串、布尔
  • heap堆

    1. 特点:每个数据随机存放
    2. 用于存放对象:数组、函数
  • window变量和window对象是两个东西

  • window变量是一个容器,存放window对象的地址

  • window对象是Heap里的一坨数据

  • console和console对象不是同一个东西

  • Object和Object函数对象不是同一个东西,前者是内存地址,后者是一坨内存

5、JS的三座大山:this、原型、AJAX

6、原型链

  • 首字母大写的对象,属性中就会包含prototype属性,如Object、Array
  • 首字母小写对象拥有隐藏属性:__proto__
  • prototype__proto__共同点:里面都存放着原型的地址
  • prototype__proto__区别prototype存放在首字母大写的函数中,__proto__存放在小写的对象中
  • 当有两层链接时,不会修改(画图可知)如:
   var obj = {};
   var obj2 = {};
   obj.toString='xxx'
   obj2.toString = function toString()

7、原型图实例

JS内存图和JS世界

转载自:https://juejin.cn/post/6844904114959155208
评论
请登录