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

  • 相关阅读:
    CSS3——过渡
    CSS——优雅降级和渐进增强
    jq1 颜色填充器 和清空指定颜色
    1. 初识node
    javaSE- 01
    鼠标悬浮图片时弹出透明提示图层的jQuery特效
    通过jQuery制作电子时钟表的代码
    9种网页Flash焦点图和jQuery焦点图幻灯片
    7种网页图片切换方式代码
    21种网页在线客服代码实例演示
  • 原文地址:https://www.cnblogs.com/lulin1/p/9364795.html
Copyright © 2011-2022 走看看