术语“激活对象”是“变量对象”的另一个名称还是实际上它们之间有任何区别?我一直在阅读一些关于如何在执行上下文中形成变量作用域的JavaScript文章,并且从我的角度来看,似乎在大多数文章中他们可以交替使用这两个术语。JavaScript中的激活和变量对象?
回答
嗯,我刚刚学到了一些东西:)。从this article,它会出现一个函数的执行上下文内,激活对象被用作可变对象:
当执行上下文中创建了一些事情发生在限定的顺序。首先,在函数的执行上下文中创建一个“激活”对象。
然后,“变量实例化”过程使用ECMA 262引用为“变量”对象的对象进行。但是,Activation对象用作Variable对象(请注意,这很重要:它们是同一个对象)。为每个函数的形式参数创建Variable对象的命名属性,如果函数调用的参数与这些参数相对应,则将这些参数的值分配给属性(否则分配的值未定义)。
但是,当您在全球范围内的时候,没有一个激活对象,因此全局对象作为变量对象,而不是:
全球执行环境得到了一些轻微不同的处理,因为它没有参数,所以它不需要定义的Activation对象来引用它们。 [...]全局对象用作Variable对象,这就是为什么全局声明的函数成为全局对象的属性。
所以它听起来像“激活对象”和“变量对象”是一个函数上下文中的同一事物,但不是在全局上下文中。
一种激活对象处于范围链与最下面为全局对象最上面的对象。 鉴于可变对象是抽象的概念,因此,根据其执行上下文,是在范围链任何链路包括激活/全局对象。
它包含:
- 所有变量和函数你的函数体内声明;
- 由函数签名指定的名为的参数;
- 参数作为对象名为
arguments
(如果您希望您的函数支持多个签名)。
它不包含:
this
(因为它不是一个变量);- 命名函数表达式。
另外信息 - JavaScript. The core.
很少引号TL的情况下;博士:
甲可变对象是数据的范围与执行相关上下文。这是一个特殊对象与上下文相关联,其中存储变量和函数声明正在上下文中定义。
A 变量对象是抽象概念。在不同的上下文类型中,物理上,它使用不同的对象来呈现。
[..]在全球范围内的可变对象是全局对象本身[..]
[..]的函数的可变对象是相同的简单可变对象 ,但除了变量和函数声明,它还存储形式参数和
arguments
对象,被称为ACTIVA对象。[..]在一个代码访问
this
时,它的值被直接从执行上下文采取无任何范围链查找。
您可以向我们展示每种情况下的一些源代码吗? – 2014-01-24 05:09:33
它更准确的说,一个激活对象的类型是可变的对象。这与一个人是如何成为一种人类相似。如上所述here,术语“可变对象”只是用来描述认为描述当前正在执行上下文的环境和范围的性质的任何对象广义术语。
因此,全局执行上下文(即,外部的任何函数)内,它最终被全局对象。为什么?因为它是保存描述全局执行上下文的环境和范围的属性的对象。
尽管在函数本地执行上下文中(即函数内),它是变量对象的函数本地对象(也称为激活对象),因为它是保存描述环境的属性的对象,以及当前正在执行的功能的范围。例如函数参数等属性。
- 1. 对象和变量在Javascript
- 2. 的Javascript全局上下文的可变对象VS功能激活对象
- 3. 使用对象变量激活和取消WordPress钩子的问题
- 4. Javascript对象变量?
- 5. JavaScript变量对象
- 6. 生产中的MySQL变量innodb_file_per_table激活
- 7. Javascript全局变量或对象变量
- 8. unity3d游戏对象已被激活或取消激活
- 9. JavaScript在变量中扩展对象
- 10. 在javascript中的对象上设置变量变量
- 11. JavaScript对象变量不会改变
- 12. 远程对象激活疑问
- 13. 将方法应用于javascript中的对象和私有变量
- 14. 结合对象内的变量的Javascript
- 15. Iphone4的Javascript声音激活
- 16. 已激活和取消激活
- 17. 多级对象中的变量变量
- 18. 辛格尔顿和客户端激活的对象(CAO),Remoitng
- 19. .NET Remoting - 关于RegisterWellKnownServiceType和激活远程对象的问题
- 20. 带有变量的Javascript对象
- 21. 参考变量和对象
- 22. Javascript对象 - 在创建对象之前使用对象中定义的变量
- 23. Nodejs:node.js中的对象变量
- 24. 在javascript中获取变量/对象元素和值
- 25. 在WPF中的可视对象中激活鼠标事件
- 26. 的Javascript:设置对象变量内的对象实例
- 27. 激活和停用一个对象不工作
- 28. C - 激活记录中变量的地址
- 29. Python中的每个激活“全局”变量?
- 30. javascript动作后激活div
我从来没有听说过“变量对象”的。你从哪里得到这个指定? – Zecc 2011-06-13 23:09:07
Zecc - ES3§10.1.3变量Instatiation:“每个执行上下文都与它关联一个变量对象。” ES5将其称为*变量环境*(ES5§10.3,表19),措辞不同但实际上是相同的事情:*创建执行上下文时,其词法环境和变量环境组件最初具有相同的值* – RobG 2011-06-14 01:19:44