Answers:
让我从根开始...
执行上下文是包含以下内容的对象:
this
值变量对象是一种抽象的事物,可以是以下任意一种:
window
,document
或console
在浏览器中)驻留激活对象是持有以下内容的对象:
arguments
此功能的对象因此,激活对象只是可变对象的一种特殊情况。
它基本上是一个容器,用于存储您可以在函数中通过名称访问的所有本地内容(除外)this
。我在这里可能不准确,但这就是我的想法。
带有一些精美图片的更多说明:
激活对象是用于保存描述执行功能的环境和范围的属性的对象。在此对象上存储例如函数参数。根据定义,激活某事物是使该事物起作用或起作用。因此,当您听到“激活对象”时,请考虑“功能”对象,或者更好的是,对于函数而言是本地的根对象(即,功能本地对象)。
关于变量对象,激活对象或多或少是变量对象的具体实例,变量对象本身(这里是指变量对象)是ABSTRACT对象类型。如前所述这里 ...
术语“变量对象”是一个通用或抽象术语,用于指代具有描述当前执行上下文的环境和范围的属性的任何对象。
因此,在全局执行上下文的环境和范围内(即,在函数外部时),全局对象是变量对象。在浏览器中,由于全局或最外部执行环境是浏览器WINDOW,因此window
最终该对象被用作Variable对象。这就是为什么用var
关键字在函数外部声明的变量最终出现在window
对象上的原因。
但是,在函数范围内,激活对象(即函数本地对象)是变量对象,因为该对象用于存储描述执行函数范围的属性。