zoukankan      html  css  js  c++  java
  • js--变量对象总结

      

      当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。

        对于每个执行上下文,都有三个重要属性: 

      •   变量对象(Variable object,VO)
      •   作用域链(Scope chain)
      •   this

      变量对象:变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明。  

      在函数上下文中,我们用活动对象(activation object, AO)来表示变量对象。

      

      执行上下文的代码会分成两个阶段进行处理:分析执行,我们也可以叫做:

    1. 进入执行上下文
    2. 代码执行

      活动对象和变量对象其实是一个东西,只是变量对象是规范上的或者说是引擎实现上的,不可在 JavaScript 环境中访问,只有到当进入一个执行上下文中,这个执行上下文的变量对象才会被激活,所以才叫 activation object 呐,而只有被激活的变量对象,也就是活动对象上的各种属性才能被访问。

      活动对象是在进入函数上下文时刻被创建的,它通过函数的 arguments 属性初始化。arguments 属性值是 Arguments 对象。

      

      1、VO 和 AO 到底是什么关系。

        未进入执行阶段之前,变量对象(VO)中的属性都不能访问!但是进入执行阶段之后,变量对象(VO)转变为了活动对象(AO),里面的属性都能被访问了,然后开始进行执行阶段的操作。

        它们其实都是同一个对象,只是处于执行上下文的不同生命周期。

      2、一个执行上下文的生命周期可以分为两个阶段。

      (1)创建阶段

    在这个阶段中,执行上下文会分别创建变量对象,建立作用域链,以及确定this的指向。

      (2)代码执行阶段

    创建完成之后,就会开始执行代码,这个时候,会完成变量赋值,函数引用,以及执行其他代码。

      

     

      3、进入执行上下文时,初始化的规则如下,从上到下就是一种顺序:

      default

      4、AO 实际上是包含了 VO 的。因为除了 VO 之外,AO 还包含函数的 parameters,以及 arguments 这个特殊对象。也就是说 AO 的确是在进入到执行阶段的时候被激活,但是激活的除了 VO 之外,还包括函数执行时传入的参数和 arguments 这个特殊对象。
      AO = VO + function parameters + arguments

  • 相关阅读:
    操盘策略:判断强庄股的四个诀窍
    三类股有望继续走强
    操盘策略:股市空头陷阱五大招数
    每日一招:面对亏损我们应该如何操作(鳄鱼法则)
    (转)一个大户的自白:我是这样被两融打爆的
    3.2、迭代
    3.1、切片
    2.4、递归函数
    2.3、函数的参数
    2.2、定义函数
  • 原文地址:https://www.cnblogs.com/lulin1/p/9364795.html
Copyright © 2011-2022 走看看