对GO/AO/VO的理解

GO

  • Global Object JS代码在执⾏前会现在堆内存中创建⼀个全局对象(GO)
  • ⽤于存放⼀些定义好的变量⽅法等包含Date Array String Number setTimeout等
  • 同时有⼀个window属性指向⾃⼰
  • 同时在语法分析转成AST的过程中也会将⼀些变量 函数 存放在GO中 只是变量的初始值为 undefifined

AO

  • 函数在执⾏前会先在堆内存中创建⼀个AO(Activation Object)对象 ⾥⾯存放这arguments 对应函数的形参 以及在函数中定义的变量 初始值为undefifined

VO

  • Variable Object 在执⾏函数时 会在执⾏上下⽂栈(ECS)中进⼊⼀个函数执⾏上下⽂(FEC)其中有三个核⼼ 核⼼之⼀是VO 指向的是该函数在内存中解析时创建的AO ⽽在全局执⾏上下⽂中指向的是GO